【tensorflow】Graph对象、Session对象、占位符

创建Graph对象,.Graph(),无需接收任何参数。.as_default()访问上下文管理器,添加Op。加载TensorFlow库时,自动创建一个Graph对象作为默认数据流图,Op、Tensor对象自动放置在默认数据流图。多个不依赖模型需要创建多个Graph对象,节点添加到正确的数据流图。不要将默认数据流图和用户创建数据流图混合使用,既存在自定义数据流图,又存在默认数据流图时,应把各自的Op写在with .as_default里。可以从其他TensorFlow脚本加载已定义模型,用Graph.as_graph_def()、tf.import_graph_def()赋给Graph对象。

TensorFlow Session负责执行数据流图。.Session()构造方法有3个可选参数。target指定执行引擎,默认空字符串,分布式中用于连接不同tf.train.Server实例。graph加载Graph对象,默认None,默认当前数据流图,区分多个数据流图时的执行,不在with语句块内创建Session对象。config指定Session对象配置选项。
.run()方法接收一个参数fetches指定执行对象,任意数据流图元素(Op 或Tensor对象),Tensor对象输出NumPy数组,Op对象输出None。fetches为列表,输出元素对应值列表。三个可选参数feed_dict、options、run_metadata。feed_dict覆盖数据流图Tensor对象值,输入Python字典对象,字典键为被覆盖Tensor对象句柄,值为数字、字符串、列表、NumPy数组,类型与键相同,用于虚构值测试或指定输入值。Session对象找到所需全部节点,顺序执行节点,输出。
最后需要调用.close()方法释放资源。Session对象作为上下文管理器,离开作用域自动关闭。.as_default()作为作为上下文管理器,作为with语句块默认Session对象,必须手工关闭Session对象。
InteractiveSession运行时作为默认会话。尽量不要用。

.placeholder Op创建占位符,利用占位节点添加输入,以便数据流图变换、数值复用。dtype参数为数据类型,必须指定。shape参数为张量维数长度,默认为None,可选。name参数为标识符,可选。Session.run()中feed_dict参数,占位符输出句柄为键,传入Tensor对象为值。必须在feed_dict为计算节点每个依赖占位符包含一个健值对。placeholder的值无法计算。

登录后复制

import tensorflow as tf
import numpy as np
in_default_graph = tf.add(1, 2)#放置在默认数据流图
g1 = tf.Graph()#创建数据流图
g2 = tf.Graph()
default_graph = tf.get_default_graph()#获取默认数据流图句柄
with g1.as_default():#放置在g数据流图
in_graph_g1 = tf.multiply(2, 3)#此Op将添加到Graph对象g1中
with g2.as_default():#放置在g数据流图
in_graph_g2 = tf.div(4, 2)#此Op将添加到Graph对象g2中
with default_graph.as_default():#放置在默认数据流图
also_in_default_graph1 = tf.subtract(5, 2)#此Op将添加到默认数据流图中
also_in_default_graph2 = tf.multiply(also_in_default_graph1, 2)#此Op将添加到默认数据流图中
replace_dict = {also_in_default_graph1: 15}
also_in_default_graph3 = tf.placeholder(tf.int32, shape=[2], name="my_input")#创建指定长度、数据类型的占位tensor
also_in_default_graph4 = tf.reduce_prod(also_in_default_graph3, name="prod_also_in_default_graph4")
#占位tensor使用
also_in_default_graph5 = tf.reduce_sum(also_in_default_graph3, name="sum_also_in_default_graph4")
#占位tensor使用
also_in_default_graph6 = tf.add(also_in_default_graph4,also_in_default_graph5, 
name="add_also_in_default_graph6")#占位tensor使用
#with tf.Session(graph=g1) as sess:#离开作用域后自动关闭
#    sess.run(in_graph_g1)
sess = tf.Session(graph=tf.get_default_graph())#以默认数据流图创建Session对象
input_dict = {also_in_default_graph3: np.array([5, 3], dtype=np.int32)}#创建传给feed_dict的字典
#sess.run([also_in_default_graph1, also_in_default_graph2], feed_dict=replace_dict)
#执行Session对象,将replace_dict赋给feed_dict
sess.run(also_in_default_graph6, feed_dict=input_dict)#将input_dict的值传给占符节点并执行
#with sess.as_default():
#    also_in_default_graph1.eval()
#sess = tf.Session(graph=g1)
#sess.run(in_graph_g1)
#sess = tf.Session(graph=g2)
#sess.run(in_graph_g2)
writer = tf.summary.FileWriter('./my_graph', sess.graph)
writer.close()
sess.close()#关闭Session对象,释放资源


【tensorflow】Graph对象、Session对象、占位符_句柄
graph?run=-3.png



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空