构建TensorFlow数据流图
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
TensorFlow工作模式:
(1) 定义数据流图;
(2) 运行数据流图。
In [1]:
import tensorflow as tf
In [2]:
a = tf.constant(5, name = "input_a")
In [3]:
b = tf.constant(3, name = "input_b")
In [4]:
c = tf.multiply(a, b, name = "mul_c")
In [5]:
d = tf.add(a, b, name = "add_d")
In [6]:
e = tf.add(c, d, name = "add_e")
In [7]:
sess = tf.Session()
In [9]:
sess.run(e)
Out[9]:
23
代码对应的数据流图
(1) 最开始时,可看到两个值5和3流入该数据流图;
(2) 这些初始值被分别传入两个明确的input节点(a与b);
(3) 节点c表示乘法运算,它分别从节点a与b接收输入值5和3,并将运算结果15输出到节点e;与此同时,节点d对相同的两个输入执行加法运算,并将计算结果8传递给节点e;
(4) 最后,该数据流图的终点——节点e接收输入值15和8,将两者相加,并输出该数据流图的最终结果23。
补充:可以使用TensorBoard可视化该数据流图。先用pip在当前环境下安装TensorBoard,再添加如下语句:
writer = tf.summary.FileWriter("logs/", sess.graph)
可以看到在当前路径下多了logs文件夹,里面有存放的数据流图文件。再在cmd里面将地址换成logs的上一级地址,并输入:
tensorboard --logdir=logs
最后可以得到一个网址,或者在地址栏输入http://localhost:6006 ,即可得到可视化的数据流图。
最后再添加两句将其关闭:
writer.close()
sess.close()
In [1]:
reset
Once deleted, variables cannot be recovered. Proceed (y/[n])? y
In [9]:
# 张量思维
In [2]:
import tensorflow as tf
In [3]:
a = tf.constant([5, 3], name = "input_a")
In [4]:
b = tf.reduce_prod(a, name = "prod_b")
In [5]:
c = tf.reduce_sum(a, name = "sum_c")
In [6]:
d = tf.add(b, c, name = "add_d")
In [7]:
sess = tf.Session()
In [8]:
sess.run(d)
Out[8]:
23
代码对应的数据流图
与之前相比,原先的两个独立输入节点被替换为一个统一的输入节点,传入一组数值之后,它们会由tf.constant函数转化为一个一阶张量。
之前的标量加法乘法,现在可用tf.reduce_prod()与tf.reduce_sum()重新定义。
在TensorFlow中,所有节点之间传递的数python教程据都是张量对象。