有趣的tensorflow数据流

tensorflow符号主义的计算首先定义各种变量,然后建立一个“计算图”,计算图规定了各个变量之间的计算关系。

代码:

import tensorflow as tf

var1 = tf.Variable(0)    # our first variable in the "global_variable" set

add1 = tf.add(var1, 1)
# 不assign是不会更新的
update_operation1 = tf.assign(var1, add1)

var2 = tf.Variable(0)
add2 = tf.add(var1,var2)
update_operation2 = tf.assign(var2, add2)

with tf.Session() as sess:
    # once define variables, you have to initialize them by doing this
    sess.run(tf.global_variables_initializer())
    for _ in range(3):
        # run 若以tuple的形式,则两者之间没有顺序,并发执行
        result = sess.run((update_operation1,update_operation2))
        print(result)

with tf.Session() as sess:
    # once define variables, you have to initialize them by doing this
    sess.run(tf.global_variables_initializer())
    for _ in range(3):
        # run 先执行update_operation1,后执行update_operation2
        result1 = sess.run(update_operation1)
        result2 = sess.run(update_operation2)
        print(result1,result2)

with tf.Session() as sess:
    # once define variables, you have to initialize them by doing this
    sess.run(tf.global_variables_initializer())
    for _ in range(3):
        # run 先执行update_operation1,后执行update_operation2
        result = sess.run(update_operation1)
        print(result)

with tf.Session() as sess:
    # once define variables, you have to initialize them by doing this
    sess.run(tf.global_variables_initializer())
    for _ in range(3):
        # run 先执行update_operation1,后执行update_operation2
        result = sess.run(update_operation2)
        print(result)

试验结果:

第一个session:结果不唯一。

第一次循环:可能有(1,0)、(1,1)

第二次循环:可能有(2,1)、(2,2)、(2,3)

第二次循环:可能有(3,3)、(3,4)、(3,5)、(3,6)

第二个session:结果唯一。

1 1
2 3
3 6

再看看单个执行的情况:

第三个session:结果唯一。

依次输出1 2 3。

第四个session:结果唯一。

依次输出0 0 0。

总结:

tensorflow各个数据流之间没有顺序,因此需注意计算流之间的依赖关系,避免值被覆盖的问题。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值