一、摘要

TensorFlow中的图(Graph)是众多操作(Ops)的集合,它描述了具体的操作类型与各操作之间的关联。在实际应用中,我们可以直接把图理解为神经网络(Neural Network)结构的程序化描述。TensorFlow中的会话(Session)则实现图中所有操作,使得数据(Tensor类型)在图中流动(Flow)起来。平常学习或使用TensorFlow中,我们基本是构筑一个图,开启一个会话,然后run。但最近由于工作需要,我探索了多图(Multiple Graphs)方式。本文主要任务是简单记录学习过程,以备复阅。如果能给看官提供一丝帮助,那也是极好。

二、多图实现

(交代一下平台版本:PyCharm Community Edition 2016.3.2、Python3.5.2、tensorflow0.12.1)
片段一:多图的建立与默认图

import tensorflow as tf
import numpy as np
g1 = tf.Graph()  #建立图1
g2 = tf.Graph()  #建立图2
print('tf.get_default_graph()=',tf.get_default_graph())#获取默认图,并显示基本信息
print('g1                    =',g1)
print('g2                    =',g2)
print('------------------------------------')

片段一运行结果:
tf.get_default_graph() = <tensorflow.python.framework.ops.Graph object at 0x000001AACC965550>
g1              = <tensorflow.python.framework.ops.Graph object at 0x000001AAC7C5FC50>
g2              = <tensorflow.python.framework.ops.Graph object at 0x000001AAC7C5FD68>
------------------------------------
从结果地址可以看出:默认图自动存在,手动建立的图与默认图完全不同

片段二:建立各图下的具体操作(Op)

with g1.as_default():#在with模块中,g1作为默认图x_data = np.random.rand(100).astype(np.float32)#定义图中具体操作y_data = x_data * 0.1 + 0.3W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))b = tf.Variable(tf.zeros([1]))y = W * x_data + bloss = tf.reduce_mean(tf.square(y - y_data))print('num-of-trainable_variables=', len(tf.trainable_variables()), ' num-of-global_variables=',len(tf.global_variables()))#统计变量个数print('g1                    =',g1)print('tf.get_default_graph()=',tf.get_default_graph())
print('tf.get_default_graph()=',tf.get_default_graph())
W2 = tf.Variable(tf.random_uniform([1], -1.0, 1.0))#with模块外定义操作,比较模块内外变量个数变化情况
print('num-of-trainable_variables=',len(tf.trainable_variables()),' num-of-global_variables=',len(tf.global_variables()))
print('------------------------------------')

片段二运行结果:
num-of-trainable_variables= 2  num-of-global_variables= 2
g1              = <tensorflow.python.framework.ops.Graph object at 0x000001AAC7C5FC50>
tf.get_default_graph() = <tensorflow.python.framework.ops.Graph object at 0x000001AAC7C5FC50>
tf.get_default_graph() = <tensorflow.python.framework.ops.Graph object at 0x000001AACC965550>
num-of-trainable_variables= 1  num-of-global_variables= 1
------------------------------------
由运行结果可以看出:
a、如上所述,所建操作依附于默认图 。使用with模块,在模块中让具体的图作为默认图。
b、退出with g.as_default()模块,原始默认图立马恢复(系统用栈来进行管理)
c、类似于tf.trainable_variables()、tf.global_variables()等都只针对此刻默认图里的变量,编写时要小心。
片段三:在各图下建立会话进行计算

with g1.as_default():sess1 = tf.Session(graph=g1)print('sess1',sess1)init = tf.global_variables_initializer()sess1.run(init)train = tf.train.GradientDescentOptimizer(0.5).minimize(loss)for step in range(201):sess1.run(train)if step % 100 == 0:print(step, sess1.run(W), sess1.run(b))with g2.as_default():w = tf.Variable(1.0)b = tf.Variable(1.5)wb=w+bsess2 = tf.Session(graph=g2)sess2.run(tf.global_variables_initializer())
print(sess2.run(wb))#定义并初始化后,可以在模块外运行
print('sess2',sess2)

片段三的运行结果如下:
sess1 <tensorflow.python.client.session.Session object at 0x000001AACCA168D0>
0 [-0.41363323] [ 0.84654742]
100 [ 0.09930082] [ 0.30039138]
200 [ 0.09999922] [ 0.30000046]
2.5
sess2 <tensorflow.python.client.session.Session object at 0x000001AACC9FBE80>

由运行结果可以看出:在各自的图下建立各自的会话进行计算各不干扰

博文就到此结束,看官若有疑问,欢迎留言!

关于TensorFlow中的多图(Multiple Graphs)相关推荐

  1. 在tensorflow中的网格图问题--np.mgrid()

  2. TensorFlow 中三种启动图用法

    转自https://blog.csdn.net/lyc_yongcai/article/details/73467480 TensorFlow 中有三种启动图的方法:tf.Session(),tf.I ...

  3. tensorflow tf.enable_eager_execution()(立即执行操作,不添加到稍后在“ tf.Session”中执行的图)

    @tf_export("enable_eager_execution") def enable_eager_execution(config=None,device_policy= ...

  4. 在TensorFlow中使用深度学习GANs处理图像

    设计师和摄影师用内容自动填补来补充图像中不想要的或缺失的部分.与之相似的技术还有图像完善和修复.实现内容自动填补,图像完善和修复的方法有很多.本文介绍的是 Raymond Yeh 和 Chen Che ...

  5. 在Tensorflow中使用深度学习构建图像标题生成器

    by Cole Murray 通过科尔·默里(Cole Murray) 在Tensorflow中使用深度学习构建图像标题生成器 (Building an image caption generator ...

  6. 猪年快乐之TensorFlow中实现word2vec及如何结构化TensorFlow模型

    猪年快乐之TensorFlow中实现word2vec及如何结构化TensorFlow模型 导语 今天是2019年新年第一天,首先祝福大家猪年大吉,在新的一年里多多学习,多多锻炼,身体健康,万事如意! ...

  7. tensorflow中的seq2seq的代码详解

    seq2seq模型详解中我们给出了seq2seq模型的介绍,这篇文章介绍tensorflow中seq 2seq的代码,方便日后工作中的调用.本文介绍的代码是版本1.2.1的代码,在1.0版本后,ten ...

  8. 卷积神经网络简介及其在TensorFlow中的实现

    介绍: (Introduction:) Convolutional Neural Networks are deep neural networks that were designed typica ...

  9. TensorFlow(2)图(默认图与自定义图) TensorBoard可视化

    目录 一.图 1.默认图 1.调用方法查看默认图属性 2..graph查看图属性 代码 2.自定义图(创建图) 1.创建自定义图 2.创建静态图 3.开启会话(运行) 4.查看自定义图 代码 二.Te ...

最新文章

  1. 云端卫士架构师讲DDoS攻击的智能防御之道
  2. [Android基础] VideoView
  3. 数字测图原理与方法的实习日志_【技术】消费级无人机倾斜摄影测量1:500测图方法及精度研究...
  4. PHP实现四位数字+字母验证码
  5. mysql主从备份及原理分析
  6. Linux搜狗输入法候选词乱码
  7. 苹果2024年推出真全面屏iPhone 但可能只是高端版
  8. php获取表单元素的值,PHP如何获取表单提交的数据
  9. Begin using git (Part1) - Git的安装与配置
  10. ZZH:魔兽世界之000:MPQ
  11. 两分钟,帮你搞懂光纤接头
  12. tensorflow2.0 numpy.ndarray 与tenor直接互转
  13. 如何制作unity艺术字体
  14. 通用定时器产生PWM
  15. 风力机叶片气动设计 matlab 程序,基于MATLAB的小型风力机叶片设计
  16. 计算机从加电到进入桌面,电脑开机一直停留在一个界面,我按操作进入了这个界面,接下来该肿么弄?...
  17. 由设计稿一键智能生成代码的快捷软件
  18. 视频编码中CBR和VBR的区别
  19. 小米手机修改ip代理服务器,小米手机如何设置和更改静态IP地址
  20. 1. 用户行为采集平台概述

热门文章

  1. 每秒处理10万订单的乐视支付架构
  2. JAVA -- 正则之 贪婪与非贪婪模式概述(1)
  3. 周鸿祎刘强东等互联网大佬最失败的创业项目
  4. 不笑找我系列 | 程序员爆笑漫画十条
  5. JDBC--预编译的statement对数据库进行添加数据的操作
  6. EDAS发布单工作原理及问题排查
  7. Hive第二代客户端远程连接
  8. 减少无线链接切换导致数据体验变差的技术简介
  9. 爬取新浪微博某超话用户信息,进行EDA分析
  10. c语言体重指数怎么算_107股票信息网,股票涨3个点怎么算,股市行情今日大盘上证指数走势图...