文章字数:1208,阅读全文大约需要4分钟
基本概念
一、计算模型——计算图
1.1基本概念
- 计算图是
Tensorflow
最基本的概念,Tensorflow
中所有的计算都会转为计算图上的节点。 - 张量
Tensor
,可以理解为多维数组(0-d tensor:标量,1-d tensor:向量,2-d tensor:矩阵)表明了数据结构。 - 流
flow
,体现了计算模型(张量之间通过计算相互转换的过程)。Tensorflow
每个计算都是计算图上的节点,节点之间的边描述了计算之间依赖关系。
1.2 基本过程
- 定义计算图中所有计算
- 执行计算
1.3使用默认计算图
1 | # 引入TensorFlow |
1.4生成新的计算图
注:不同的计算图张量和运算都不会共享
1 | import tensorflow as tf |
1.5指定运行计算的设备
1 | g = tf.Graph() |
1.6常用集合
Tensorflow
的图可以有效管理资源(张量、变量等)。其中自动维护的集合就是访问这些资源的有效手段
集合名 | 集合内容 | 使用场景 |
---|---|---|
tf.GraphKeys.VARIABLES | 所有变量 | 持久化TensorFlow模型 |
tf.GraphKeys.TRAINABLE_VARIABLES | 可学习的变量(一般指神经网络的参数) | 模型迅雷、生成可视化内容 |
tf.GraphKeys.SUMMARIES | 日志生成相关的张量 | TensorFlow计算可视化 |
tf.GraphKeys.QUEUE_RUNNERS | 处理输入的QuecueRunner | 输入处理 |
tf.GraphKeys.MOVING_AVERAGE_VARIABLES | 所有计算了滑动平均值的变量 | 计算变量滑动平均值 |
二、数据类型——张量
2.1概念
- 张量可以简单理解为多维数组(矩阵),零阶表示标量(scalar),一节代表向量(vector),n阶代表矩阵。
- 张量并没有保存具体数字,保存的是的到这些数字的计算过程
2.2创建张量
1 | import tensorflow as tf |
- 计算结果也是一个张量
- 张量的结构中有三个要素,名字(name是唯一标准)、维度(shape)、类型(type)
- 张量可以通过’node:src_output’的形式命名,其中node为节点名称,src_output表示当前张量来自节点的第几个输出。shape=(2,)是张量的维度信息,这个说明result是一个一维数组,且数组长度是2。第三个是类型,每个张量都有唯一的类型,Tensorflow的计算类型必须相同。
类型不匹配的例子
1 | import tensorflow as tf |
2.3tf.constant
用于计算得出张量的方法,原型如下
1 | tf.constant( |
value
是必填的
value
的数量必须小于shape
代表的矩阵最大承受数量,少于则会用最后一个值填充
1 | tf.constant([1, 2, 3, 4, 5, 6], shape=[2, 3]) |
2.4tf.Variable
tf.Variable
的运算结果也是一个张量
1 | # 使用正态分布的方式创建一个2*3的矩阵,随机元素标准差为2 |
2.5张量的作用
- 对中间计算结果的引用,提高代码可读性
- 计算图构造完成后,张量用来计算结果
三、运行模型——会话
Tensorflow
中的会话(session)是来执行定义好的运算
1 | with tf.Session() as sess: |
tf.Tensor.eval
函数可以计算一个张量的取值
1 | sess = tf.Session() |
tf.InteractiveSession
函数可以省去将产生的会话注册为默认会花的过程。
1 | #交互式环境下直接构建默认会话 |