Tensorflow的初学习进程(5)——计算图

计算图是Tensorflow 的最基本的概念。Tensorflow中所有的计算都会被转化成计算图上的结点。

Tensorflow 程序一般可以分为两个不同的阶段,第一个阶段定义计算图中所有的计算,在这个过程中,Tensorflow会自动将定义的计算转化为计算图上的结点。

Tensorflow有通过tf.get_default_graph获取当前默认的计算图 ,也支持通过tf.Graph函数来生成新的计算图。不同的计算图中的张量(tensor)和运算不会被共享。

以下为一个示例

import tensorflow as tf

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

这个示例生成了两个计算图g1和g2,两个计算图中都有一个变量v ,分别表示[0.]和[1.],所以将其分别进行Session输出时,同时v但是输出的结果不同

PS:在程序中,前面两个with会报错,不知道是怎么一回事,但是不影响最后输出

报错的内容是:

Context manager 'generator' doesn't implement __enter__ and __exit__.pylint(not-context-manager)

这个问题目前还没影响学习,所以在接下来的学习中再研究

猜你喜欢

转载自blog.csdn.net/qq_35601980/article/details/89005181