凯鲁嘎吉
用书写铭记日常,最迷人的不在远方
 

构建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
 

flow_graph

 
代码对应的数据流图
 

(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()

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
 

flow_tensor

 
代码对应的数据流图
 

与之前相比,原先的两个独立输入节点被替换为一个统一的输入节点,传入一组数值之后,它们会由tf.constant函数转化为一个一阶张量。
之前的标量加法乘法,现在可用tf.reduce_prod()与tf.reduce_sum()重新定义。
在TensorFlow中,所有节点之间传递的数据都是张量对象。

 

参考文献:人工智能原理与实践:基于Python语言和TensorFlow / 张明,何艳珊,杜永文编著. —— 北京:人民邮电出版社,2019.8.

所用版本:python3.5.2,tensorflow1.8.0,tensorboard1.8.0

 

posted on 2021-08-27 09:30  凯鲁嘎吉  阅读(253)  评论(0编辑  收藏  举报