一、tensorflow安装
二、基本概念
图(Graph):图描述了计算的过程,TensorFlow使用图来表示计算任务。
张量(Tensor):TensorFlow使用tensor表示数据。每个Tensor是一个类型化
的多维数组。
操作(op):图中的节点被称为op(opearation的缩写),一个op获得/输入
0个或多个Tensor,执行计算,产生0个或多个Tensor。
会话(Session):图必须在称之为“会话”的上下文中执行。会话将图的op分
发到诸如CPU或GPU之类的设备上执行。
变量(Variable):运行过程中可以被改变,用于维护状态。
数据类型
边
TensorFlow的边即有两种连接关系:
数据依赖
控制依赖
实线边表示数据依赖,代表数据,即张量。任意维度的数据统称为张量。在机器
学习算法中,张量在数据流图中从前往后流动一遍就完成一次前向传播,而残差
从后向前流动一遍就完成一次反向传播。
虚线边表示控制依赖,可以用于控制操作的运行,这被用来确保happens-
before关系,这类边上没有数据流过,但源节点必须在目的节点开始执行前完成。
比如x到A输出结果之前,之前必须先执行B,B称为控制依赖。
节点
节点又称为算子,它代表一个操作,一般用来表示施加的数字运算,也可以表示
数据输入的起点以及输出的重点,或者是读取/写出持久化变量的终点。
类别 示例
数学运算操作 Add、Subtract、Multiply、Div、Exp、Log、Greater、Less、Equal……
数组运算操作 Concat, Slice, Split, Constant, Rank, Shape, Shuffle……
矩阵运算操作 MatMul, MatrixInverse, MatrixDeterminant……
有状态的操作 Variable、Assign、AssignAdd……
神经网络构建操作 SoftMax, Sigmoid, ReLU, Convolution2D, MaxPool……
检查点操作 Save, Restore……
队列和同步操作 Enqueue, Dequeue, MutexAcquire, MutexRelease……
控制张量流动的操作 Merge, Switch, Enter, Leave, NextIteration……
TensorFlow图
TensorFlow编程的重点是根据业务需求,使用TensorFlow的API将业务转换为执行图
(有向无环图);图中的节点是Tensor,节点之间的连线是节点之间的操作,连线前的
节点可以认为是操作的输入,连线后的节点可以认为操作的输出;根据节点的特性(是
否有输入输出),可以将节点分为源节点、中间节点和最终的结果节点。
图构建的第一步就是创建源op(source op); 源op不需要任何的输入。op构造器的返回
值代表被构造出的op的输出,这些返回值可以传递给其它op构造器作为输入或者直接
获取结果。
TensorFlow库中有一个默认图(default graph),op构造器可以直接为其添加节点,一
般情况下,使用默认的Graph即可完成程序代码的实现。不过TensorFlow也支持通过
Graph类管理多个图。
Tensorflow()节点操作(Constant,placeholder,Variable)
一、constant(常量)
constant是TensorFlow的常量节点,通过constant方法创建,其是计算图(Computational Graph)中的起始节点,是传入数据。
创建方式
def constant(value, dtype=None, shape=None, name=“Const”, verify_shape=False)
**value:**初始值,必填,必须是一个张量(1或[1,2,3]或[[1,2,3],[2,2,3]]或…)
**dtype:**数据类型,选填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…)
**shape:**数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数、维度更高,超过部分按value提供最后一个数字填充,示例代码如下
**name:**常量名,选填,默认值不重复,根据创建顺序为(Const,Const_1,Const_2…)
**verify_shape:**是否验证value的shape和指定shape相符,若设为True则进行验证,不相符时会抛出异常。