tensorflow基础

1. 图

TensorFlow 是一种采用数据流图(data flow graphs),用于数值计算的开源软件库。其中 Tensor 表明传递的数据为张量(多维数组),Flow 表明使用计算图进行运算。数据流图用「结点」(nodes)和「边」(edges)组成的有向图来描述数学运算。「结点」通常用来表示施加的数学操做,但也能够表示数据输入的起点和输出的终点,或者是读取/写入持久变量(persistent variable)的终点。边表示结点之间的输入/输出关系。这些数据边能够传送维度可动态调整的多维数据数组,即张量(tensor)。node

 

在 Tensorflow 中,全部不一样的变量和运算都是储存在计算图。因此在咱们构建完模型所须要的图以后,还须要打开一个会话(Session)来运行整个计算图。在会话中,咱们能够将全部计算分配到可用的 CPU 和 GPU 资源中。 算法

如上所示咱们构建了一个加法运算的计算图,第二个代码块并不会输出计算结果,由于咱们只是定义了一张图,而没有运行它。第三个代码块才会输出计算结果,由于咱们须要建立一个会话(Session)才能管理 TensorFlow 运行时的全部资源。但计算完毕后须要关闭会话来帮助系统回收资源,否则就会出现资源泄漏的问题。数组

TensorFlow 中最基本的单位是常量(Constant)、变量(Variable)和占位符(Placeholder)。常量定义后值和维度不可变,变量定义后值可变而维度不可变。在神经网络中,变量通常可做为储存权重和其余信息的矩阵,而常量可做为储存超参数或其余结构信息的变量。在上面的计算图中,结点 1 和结点 2 都是定义的常量 tf.constant()。咱们能够分别声明不一样的常量(tf.constant())和变量(tf.Variable()),其中 tf.float 和 tf.int 分别声明了不一样的浮点型和整数型数据。网络

2. 占位符和 feed_dict

TensorFlow 一样还支持占位符,占位符并无初始值,它只会分配必要的内存。在会话中,占位符可使用 feed_dict 馈送数据。机器学习

feed_dict 是一个字典,在字典中须要给出每个用到的占位符的取值。在训练神经网络时须要每次提供一个批量的训练样本,若是每次迭代选取的数据要经过常量表示,那么 TensorFlow 的计算图会很是大。由于每增长一个常量,TensorFlow 都会在计算图中增长一个结点。因此说拥有几百万次迭代的神经网络会拥有极其庞大的计算图,而占位符却能够解决这一点,它只会拥有占位符这一个结点。学习

3. 张量

在 TensorFlow 中,张量是计算图执行运算的基本载体,咱们须要计算的数据都以张量的形式储存或声明。以下所示,该教程给出了各阶张量的意义。blog

 

 

零阶张量就是咱们熟悉的标量数字,它仅仅只表达了量的大小或性质而没有其它的描述。一阶张量即咱们熟悉的向量,它不只表达了线段量的大小,同时还表达了方向。通常来讲二维向量能够表示平面中线段的量和方向,三维向量和表示空间中线段的量和方向。二阶张量即矩阵,咱们能够看做是填满数字的一个表格,矩阵运算即一个表格和另一个表格进行运算。固然理论上咱们能够产生任意阶的张量,但在实际的机器学习算法运算中,咱们使用得最多的仍是一阶张量(向量)和二阶张量(矩阵)。教程

相关文章
相关标签/搜索