AI-Dog

爱生活,乐分享,大家好才是真的好!

导航

TensorFlow 计算模型 -- 计算图

TensorFlow是一个通过计算图的形式表述计算机的编程系统

TensorFlow程序一般分为两个阶段,第一个阶段需要定义计算图中所有的计算(变量)

第二个阶段为执行计算

如以下代码

import tensorflow as tf


# 第一阶段定义所有的计算
a = tf.constant([1, 2], name='a')
b = tf.constant([1, 2], name=b')
result = a + b

# 第二阶段,执行计算
# 创建一个会话
sess = tf.Session()
#运行会话执行计算
sess.run(result)
# 关闭会话
sess.close()

 通过tf.get_default_graph函数可以获取当前默认的计算图,通过a.graph可以查看张量所属的计算图

如果没有特意指定a.graph等于默认的计算图,下面的代码输出为True

print(a.graph is tf.get_default_graph())  # 输出为True

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

import tensorflow as tf


g1 = tf.Graph()
with g1.as default():
    # 在计算图g1中定义变量'v',并设置初始值为0
    v = tf.get_variable('v', shap=[1], initializer=tf.zeros_initializer)

g2 = tf.Graph()
with g2.as default():
    # 在计算图g1中定义变量'v',并设置初始值为1
    v = tf.get_variable('v', shap=[1], initializer=tf.oness_initializer)


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

# 在计算图g2中读取变量'v'的取值
with tf.Session(graph=g2) as sess:
  # 初始化全局变量 tf.global_variables_initializer().run() with tf.variable_scope(
"", reuse=True): # 在计算图g2中,变量v的取值应该为1,下面应输出[1.] print(sess.run(tf.get_variable('v')))

另外计算图还可以通过tf.Graph.device函数指定运行的设备

g = tf.Graph()
# 指定计算运行设的设备,指定到gpu0上
with g.device('/gpu:0'):
    result a + b

 

posted on 2019-03-10 20:06  AI-Dog  阅读(373)  评论(0编辑  收藏  举报