图
图默认已经注册,一组表示 tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象。
获取调用:
tf.get_default_graph()
op、sess或者tensor 的graph属性
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
#实现一个加法运算
a=tf.constant(5.0)
b=tf.constant(6.0)
print(a,b)
sum1=tf.add(a,b)
#默认的这张图,相当于是给程序分配一段内存
graph=tf.get_default_graph()
print(graph)
print(sum1)
with tf.Session() as sess:
print(sess.run(sum1))
print(a.graph)
print(sum1.graph)
print(sess.graph)
Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32)
<tensorflow.python.framework.ops.Graph object at 0x00000184549AA390>
Tensor("Add:0", shape=(), dtype=float32)
11.0
<tensorflow.python.framework.ops.Graph object at 0x00000184549AA390>
<tensorflow.python.framework.ops.Graph object at 0x00000184549AA390>
<tensorflow.python.framework.ops.Graph object at 0x00000184549AA390>
图的创建
tf.Graph()
使用新创建的图
g = tf.Graph()
with g.as_default():
a = tf.constant(1.0)
assert c.graph is g
g=tf.Graph()
print(g)
with g.as_default():
c=tf.constant(11.0)
print(c.graph)
<tensorflow.python.framework.ops.Graph object at 0x000001BF67EBB390>
<tensorflow.python.framework.ops.Graph object at 0x000001BF67EBB390>
OP
op:只要使用TensorFlow的API定义的函数都是OP
会话
1.运行图的结构
2.分配资源计算
3.掌握资源(变量的资源,队列,线程)
tf.Session()
运行TensorFlow操作图的类,使用默认注册的图(可以指定运行图)
会话资源
会话可能拥有很多资源,如 tf.Variable,tf.QueueBase
和tf.ReaderBase,会话结束后需要进行资源释放
sess = tf.Session() sess.run(…) sess.close()
使用上下文管理器
with tf.Session() as sess:
sess.run(…)
config=tf.ConfigProto(log_device_placement=True)
交互式:tf.InteractiveSession()
会话的run()方法
run(fetches, feed_dict=None,graph=None)
运行ops和计算tensor
嵌套列表,元组,
namedtuple,dict或OrderedDict(重载的运算符也能运行)
feed_dict 允许调用者覆盖图中指定张量的值,提供给
placeholder使用
返回值异常
RuntimeError:如果它Session处于无效状态(例如已关闭)。
TypeError:如果fetches或feed_dict键是不合适的类型。
ValueError:如果fetches或feed_dict键无效或引用 Tensor不存在。