sess.run([])中有列表的执行情况

import tensorflow as tf
for _ in range(10):
    state = tf.Variable(0.0,dtype=tf.float32, name='state')
    one = tf.constant(1.0,dtype=tf.float32, name='one')
    two = tf.constant(2.0,dtype=tf.float32, name='two')
    add_one = tf.add(state, one, name='add_one')
    update1 = tf.assign(state, add_one, name='update1')
    change = tf.assign(state, 10000, name='change10000')
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        print(sess.run([update1, change]))
    # writer=tf.summary.FileWriter('./graph', sess.graph)

# 打印结果
"""
[10000.0, 10000.0]
[10000.0, 10000.0]
[10001.0, 10001.0]
[10000.0, 10000.0]
[10001.0, 10001.0]
[10000.0, 10000.0]
[10001.0, 10001.0]
[1.0, 1.0]
[10001.0, 10001.0]
[10001.0, 10001.0]
"""
# 所有的结果都是在[update1,change]这个list中的节点所在流程图中全部执行完之后在取值的
# 每次结果不同说明了:当计算图有多组分支时,程序会随机选择其中执行的分支顺序

sess.run([])中有列表的执行情况_第1张图片

得到10000的结果是因为最后执行了change这个节点,将state的值更新为了10000;

得到10001的结果是因为先change, 之后add_one, 最后update1;

得到1的结果是因为先add_one(此时state等于初始状态零,add_one得到1),同时另一个分支change将state的值改成了10000,最后update1把add_one的1赋值给了state。

你可能感兴趣的:(tensorflow)