• 构建TensorFlow数据流图


     

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

    作者:凯鲁嘎吉
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文链接,否则保留追究法律责任的权利。
  • 相关阅读:
    javascript block
    What is the difference between a function expression vs declaration in JavaScript?
    Clean Cache Struts2 Interceptor Tutorial
    第四节,目标检测---YOLO系列
    第三节,目标检测---R-CNN网络系列
    第二节:解决过拟合与梯度下降优化
    第一节,直观理解卷积神经网络
    第六节:深度学习的模型训练技巧——优化卷积核,多通道卷积,批量归一化
    第五节,损失函数:MSE和交叉熵
    第四节:tensorflow图的基本操作
  • 原文地址:https://www.cnblogs.com/kailugaji/p/15192458.html
Copyright © 2020-2023  润新知