tensor的含义是张量,张量是什么,听起来很高深的样子,其实我们对于张量一点都不陌生,因为像标量,向量,矩阵这些都可以被认为是特殊的张量。如下图所示:



在TensorFlow中,tensor实际上就是各种“数”的统称。而flow是流动的意思。所以TensorFlow的意思就是“数”的流动,可以说TensorFlow这个名字很形象。一般来说,编程模式有两种,一种是命令式的,一种是符号式的。命令式便于理解和调试,而符号式便于对复杂代码进行封装和抽象(就想我们把一些操作封装成函数,每次调用根据不同的输入值来得到返回值)。TensorFlow是一个符号主义的库,在TensorFlow内部,需要先定义各种变量,然后建立一个计算图(计算流图),计算图指定了各个变量之间的计算关系。计算图就像工厂里的流水线,流水线决定了每一道工序是如何对原料进行加工的。TensorFlow中的原料就是计算图输入的数据,只有输入了数据,形成了数据流(tensor开始flow了),才能形成输出。

张量

import tensorflow as tf

"""
TensorFlow中的张量有三个属性:name,shape,dtype
1.name第一个属性是张量的一个标识符name=’参数为字符串类型’,如果没有指定,会根据张量是通过什么操作(运算)自动添加,后面的0表示张量d是计算节点add的第一个输出.
2.shape,描述张量的维度信息
3.dtype,张量的类型,如果在创建节点时没有指定dtype,没有小数点默认tf.int32,有小数点默认tf.float32.tensorflow会对参与计算张量的类型进行检查,不匹配会报错
"""
#张量的属性
result = tf.add(1,2)
print(result) # Tensor("Add:0", shape=(), dtype=int32) result2 = tf.add(2,3,name='result2')
print(result2) # Tensor("result2:0", shape=(), dtype=int32) result3 = tf.add(3,4,name='result2')
print(result3) # Tensor("result2_1:0", shape=(), dtype=int32) # 创建图
a = tf.constant(1, name='input_a')
b = tf.constant(2, name='input_b',dtype=tf.int8)
f = tf.add(a,b, name='add_ab') #每一个节点(上面的a,b,f)都是一个Op(Operation),每个Op可以接受或输出多个或0个tensor对象,如tf.constant()创建一个常量Op, #TensorFlow可接收Python数值、布尔值、字符串、数组。单个数值转化为0阶张量(标量)。数值列表转化为1阶张量(向量)。由列表构成的列表转化为2阶张量(矩阵)。
#TensorFlow数据类型基于NumPy。任何NumPy数组都可以传递给TensorFlow Op。使用时指定所需数据类型比不指定的代价小。
#TensorFlow返回的张量都是NumPy数组

图和会话


"""
计算图(graph):只定义计算过程和数据(tensor)的操作方式,计算图中并不保存任何数据。
会话(session):会话分配计算资源(一台或者多台的机器)去执行计算图或计算图中的一部分运算操作。当前的变量和结果保存在会话中。
""" #定义一个会话
graph = tf.Graph()
with graph.as_default():
var = tf.Variable(initial_value=1,name='var1')
initialize = tf.global_variables_initializer()
assign = var.assign(value=33)
#如果创建Op前,没有显式的创建计算图,TensorFlow将会在接下来的会话中使用使用默认的计算图 #在会话中运行计算图中定义的计算过程
"""
在TensorFlow中计算图的任何操作都需要在为计算图创建的会话中来运行。会话(session)会给相关的变量分配内存
"""
with tf.Session(graph=graph) as sess:
sess.run(initialize)
sess.run(assign)
print(sess.run(var))
# Output: 13 #变量只在一个session中有效,比如下面的代码会提示变量没有初始化。
with tf.Session(graph=graph) as sess2:
print(sess2.run(var))
# Error: Attempting to use uninitialized value var1 #当然,也可以在多个会话session中使用同一个计算图,但是每个会话中的变量是独立的,就像在多个车间中使用同样规格的生产线。 # 变量的保存和恢复
import tensorflow as tf
import numpy as np
#保存的目录
save_file = './ckpt/mymodel' #创建用来处理保存操作的类
graph = tf.Graph()
with graph.as_default():
x = tf.placeholder(dtype=tf.float32,shape=[None,2])
y = tf.placeholder(dtype=tf.float32,shape=[None,2])
w = tf.Variable(initial_value=np.random.rand(1,2),dtype=tf.float32)
b = tf.Variable(initial_value=[1.0,1.0],dtype=tf.float32)
y_pred = x * w + b
loss=tf.reduce_mean(tf.square(y_pred-y))
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.1)
train = optimizer.minimize(loss) saver = tf.train.Saver()
initialize = tf.global_variables_initializer()
x_data = np.random.rand(1000,2)
with tf.Session(graph = graph)as sess:
sess.run(initialize)
_, tmp_loss = sess.run([train, loss], feed_dict={x: x_data, y: x_data * [[2, 2]]})
print('loss:',tmp_loss)
for i in range(5000):
_,tmp_loss=sess.run([train,loss],feed_dict={x:x_data,y:x_data*[[2,2]]})
_, tmp_loss = sess.run([train, loss], feed_dict={x: x_data, y: x_data * [[2, 2]]})
print('loss:',tmp_loss)
print('w:',sess.run(w))
saver.save(sess,save_path=save_file) with tf.Session(graph = graph) as sess_restore:
saver.restore(sess_restore,save_file)
print('w:',sess_restore.run(w)) """
注意:tf.train.Saver()需要在你想要保存的变量的定义后在创建,并且要求和这些变量在同一个计算图中,否则将会导致TensorFlow的ValueError: No variables to save 错误。
"""

TensorFlow 中的张量,图,会话的更多相关文章

  1. TensorFlow计算图,张量,会话基础知识

    import tensorflow as tf get_default_graph = "tensorflow_get_default_graph.png" # 当前默认的计算图 ...

  2. AI学习---TensorFlow框架介绍[图+会话+张量+变量OP+API]

    TensorFlow的数据流图 TensorFlow的结构分析: 图 + 会话 TensorFlow = 构图阶段(数据与操作的执行步骤被描绘出一个图) + 执行图阶段(使用回话执行构建好的图中操作) ...

  3. 对Tensorflow中tensor的理解

    Tensor即张量,在tensorflow中所有的数据都通过张量流来传输,在看代码的时候,对张量的概念很不解,很容易和矩阵弄混,今天晚上查了点资料,并深入了解了一下,简单总结一下什么是张量的阶,以及张 ...

  4. Tensorflow中的图(tf.Graph)和会话(tf.Session)详解

    Tensorflow中的图(tf.Graph)和会话(tf.Session) Tensorflow编程系统 Tensorflow工具或者说深度学习本身就是一个连贯紧密的系统.一般的系统是一个自治独立的 ...

  5. Tensorflow学习笔记——张量、图、常量、变量(一)

    1 张量和图 TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库.其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行运 ...

  6. TensorFlow笔记-变量,图,会话

    变量 存储一些临时值的作用或者长久存储.在Tensorflow中当训练模型时,用变量来存储和更新参数.变量包含张量(Tensor)存放于内存的缓存区.建模时它们需要被明确地初始化,模型训练后它们必须被 ...

  7. TensorFlow中的 tensor 张量到底是什么意思?

    详见[Reference]: TensorFlow中的“Tensor”到底是什么? 以下摘录一些要点: 这个图好生动呀!~ 标量和向量都是张量(tensor).

  8. tensorflow中张量_常量_变量_占位符

    1.tensor 在tensorflow中,数据是被封装在tensor对象中的.tensor是张量的意思,即包含从0到任意维度的张量.常数是0维度的张量,向量是1维度的张量,矩阵是二维度的张量,以及还 ...

  9. tensorflow中张量的理解

    自己通过网上查询的有关张量的解释,稍作整理. TensorFlow用张量这种数据结构来表示所有的数据.你可以把一个张量想象成一个n维的数组或列表.一个张量有一个静态类型和动态类型的维数.张量可以在图中 ...

随机推荐

  1. C#事件(Event): 发布符合 .NET Framework Guidelines 的事件

    本文翻译整理自:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/events/how-to-publish-event ...

  2. Freemarker 的基础使用 (二)

    freemarker 的基础使用二 ftl 文件 <html> <head> <meta http-equiv="Content-Type" cont ...

  3. swiper如何禁止用户滑动

    禁止用户滑动,只需要在最外层添加class  “swiper-no-swiping” <div class="swiper-container swiper-no-swiping&qu ...

  4. css写斜角

    项目开发中遇到了这样的效果,百度了一波,可以使用css3的伪类实现: /*斜角公用*/1.外层的div加class='wrapper' 并需要设置相对定位 .wrapper:before { -moz ...

  5. 1z0-062 题库解析1

    You configured the Fast Recovery Area (FRA) for your database. The database instance is in archivelo ...

  6. szTom's Code Style

    介绍szTom在C++中使用的代码风格. 头文件 必须使用using namespace std; 如果是C头文件,必须使用c前缀文件名. #include <cstdio> 而不是 #i ...

  7. poj 2253 最短路 or 最小生成树

    Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sit ...

  8. 构造分组背包(CF)

    Ivan is a student at Berland State University (BSU). There are n days in Berland week, and each of t ...

  9. SBT与Play配置文件

    1. 配置文件类JSON格式,符合SCALA语法规范2. :=是最常用的方法,其作用就是将key设置成expression的值,相同的key如果被多次赋值,则后面的值会覆盖掉前面的值.适用于简单类型的 ...

  10. restframework 分页组件、响应器

    一.分页组件 1.PageNumberPagination a.全局配置 导入模块 from rest_framework.pagination import PageNumberPagination ...