TensorFlow 简介:
节点 (nodes) 在图中表示数学操作,图中的线 (edges) 则表示在节点间相互联系的多维数组,即张量 (Tensor), 而 (flow) 流 意味着这基于数据流图的计算,TensorFlow为张量从流图的一段流动到另一端的计算过程。
TensorFlow 特点:
- 高度的灵活性。只要计算能表示为一个数据流图,你就可以使用TensorFlow。
- 真正的可移植性。TensorFlow在CPU和GPU上运行,可以再台式机,服务器,云服务器,手机,Docker容器里运行。
- 自动求微分。定义预测模型的结构,将这个结构和目标函数结合在一起,并添加数据TensorFlow将自动为你计算相关的微分导数。
- 性能最优化。线程,队列,异步操作。
在TensorFlow的世界里,变量的定义和初始化是分开的,所有关于图变量的赋值和计算都要通过tf.Session的run来进行。
想要将所有图变量进行集体初始化时应该使用
tf.global_variables_initializer tf.placehold与tf.Variable的区别:
tf.placehold 占位符主要为真实输入数据和输出标签的输入, 用于在 feed_dict中的变量,不需要指定初始值,具体值在feed_dict中的变量给出。 tf.Variable 主要用于定义weights bias等可训练会改变的变量,必须指定初始值。通过Variable()构造函数后,此variable的类型和形状固定不能修改了,但值可以用assign方法修改。
tf.get_variable和tf.Variable函数差别
相同点:通过两函数创建变量的过程基本一样,tf.variable函数调用时提供的维度(shape)信息以及初始化方法(initializer)的参数和tf.Variable函数调用时提供的初始化过程中的参数基本类似。
不同点:两函数指定变量名称的参数不同,
对于tf.Variable函数,变量名称是一个可选的参数,通过name="v"的形式给出tf.get_variable函数,变量名称是一个必填的参数,它会根据变量名称去创建或者获取变量