tensorflow计算模型——计算图

1.计算图的概念

tensorflow中的所有计算都会转化为计算图中的节点

tensor就是张量(即多维数组),flow就是“流”(计算模型:张量之间的计算)
tensorflow的每一个计算都是计算图上的一个节点,节点之间的边描述了计算之间的依赖关系。
注:如果一个运算的输入依赖另一个运算的输出,那么这两个运算有依赖关系。

2.计算图的使用

tensorflow程序分两个阶段:
第一阶段:定义计算图中所有的计算;
第二阶段:执行计算。

在tensorflow程序中,系统会维护一个默认的计算图,通过tf.get_default_graph函数可以获取当前默认生物计算图。
注:使用a.graph可以查看张量所属的计算图

除了使用默认的计算图,tensorflow支持通过tf.Graph函数生成新的计算图。
注:不同计算图上的张量和计算都不会共享。

示例:

import tensorflow as tf

g1 = tf.Graph()
with g1.as_default():
       #在计算图g1中定义变量“v”,并设置初始值为0
       v = tf.get_variable("v",initializer=tf.zeros_initializer()(shape=[1]))

g2 = tf.Graph()
with g2.as_default():
       #在计算图g2中定义变量“v”,并设置初始值为1
       v = tf.get_variable("v",initializer=tf.ones_initializer()(shape=[1]))

#在计算图g1中读取变量“v”的值
with tf.Session(graph=g1) as sess:
       tf.initialize_all_variables().run()
       with tf.variable_scope("",reuse=True):
              #v的取值为0,输出应为[0.]
              print (sess.run(tf.get_variable("v")))

#在计算图g2中读取变量“v”的值
with tf.Session(graph=g2) as sess:
       tf.initialize_all_variables().run()
       with tf.variable_scope("",reuse=True):
              #v的取值为1,输出应为[1.]
              print (sess.run(tf.get_variable("v")))

计算图通过tf.Graph.device函数可以指定运行计算的设备
g = tf.Graph()
#指定运行计算的设备
with g.device('/gpu:0'):
	result = a + b

在一个计算图中,可以通过集合(collection)来管理不同类别的资源。
通过tf.add_to_collection函数可以将资源加入一个或多个集合中,然后通过tf.get_collection获取一个集合里所有的资源。

注:这里的资源可以是张量、变量或者运行tensorflow程序所需要的队列资源等等。

猜你喜欢

转载自blog.csdn.net/weixin_43202635/article/details/83961409
今日推荐