构建TensorFlow数据流图¶
作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/
TensorFlow工作模式:
(1) 定义数据流图;
(2) 运行数据流图。
import tensorflow as tf
a = tf.constant(5, name = "input_a")
b = tf.constant(3, name = "input_b")
c = tf.multiply(a, b, name = "mul_c")
d = tf.add(a, b, name = "add_d")
e = tf.add(c, d, name = "add_e")
sess = tf.Session()
sess.run(e)
(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文件夹,里面有存放的数据流图文件。再在当前tensorflow虚拟环境里面将地址换成logs的上一级地址,并输入:
tensorboard --logdir=logs
最后可以得到一个网址,或者在地址栏输入http://localhost:6006 ,即可得到可视化的数据流图。
最后再添加两句将其关闭:
writer.close()
sess.close()
reset
# 张量思维
import tensorflow as tf
a = tf.constant([5, 3], name = "input_a")
b = tf.reduce_prod(a, name = "prod_b")
c = tf.reduce_sum(a, name = "sum_c")
d = tf.add(b, c, name = "add_d")
sess = tf.Session()
sess.run(d)
与之前相比,原先的两个独立输入节点被替换为一个统一的输入节点,传入一组数值之后,它们会由tf.constant函数转化为一个一阶张量。
之前的标量加法乘法,现在可用tf.reduce_prod()与tf.reduce_sum()重新定义。
在TensorFlow中,所有节点之间传递的数据都是张量对象。
参考文献:人工智能原理与实践:基于Python语言和TensorFlow / 张明,何艳珊,杜永文编著. —— 北京:人民邮电出版社,2019.8.
所用版本:python3.5.2,tensorflow1.8.0,tensorboard1.8.0