Tensorflow 入门

     TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

   Tensorflow 入门

     什么是数据流图(Data Flow Graph)?

     数据流图用“结点”(nodes)和“线”(edges)的有向图来描述数学计算。“节点” 一般用来表示施加的数学操作,但也可以表示数据输入(feed in)的起点/输出(push out)的终点,或者是读取/写入持久变量(persistent variable)的终点。“线”表示“节点”之间的输入/输出关系。这些数据“线”可以输运“size可动态调整”的多维数据数组,即“张量”(tensor)。张量从图中流过的直观图像是这个工具取名为“Tensorflow”的原因。一旦输入端的所有张量准备好,节点将被分配到各种计算设备完成异步并行地执行运算。

       编写tensorflow可以总结为两步.
       (1)组装一个graph;
       (2)使用session去执行graph中的operation。

         
      Tensorflow 入门

          这幅图要计算  u=x+y;v=u+z;
对应这幅图,可以轻松的写出如下代码:
import tensorflow as tf

graph = tf.Graph() #定义一个图(其实没有必要,tensorflow会默认定义一个)
with graph.as_default():
    x = tf.Variable(3, name='x')
    y = tf.Variable(2, name='y')
    u = x + y
    z = tf.Variable(4, name='z')
    v=u+z
    initialize = tf.global_variables_initializer()#初始化变量

#定义一个session,并进行真正的计算
with tf.Session(graph=graph) as sess:
    sess.run(initialize)
    res = sess.run(v)
print(res)  # 5

   这段代码,首先会载入tensorflow,定义一个graph类,并在这张图上定义了x与y,z的3个变量,最后对这个值求和,并初始化所有变量。其中,Variable是定义变量并赋予初值。定义了session,并在session中执行了真正的初始化,并且求得v的值并打印出来。

   由于tensorflow会默认定义一个graph,所以代码可以简化为

import tensorflow as tf

x = tf.Variable(3, name='x')
y = tf.Variable(2, name='y')
u = x + y
z = tf.Variable(4, name='y')
v=u+z
initialize = tf.global_variables_initializer()#初始化变量

#定义一个session,并进行真正的计算
with tf.Session() as sess:
  sess.run(initialize)
  res = sess.run(v)
print(res)  # 5