TensorFlow学习笔记9——TensorFlow中具有依赖关系的多个op多次执行的问题

    在TensorFlow构建深度神经网络时,有时需要让具有依赖关系的多个op多次执行。这句话有些拗口,看下述代码:

import tensorflow as tf

a = tf.random_uniform([1],minval=0,maxval=100,dtype=tf.int32)
b = tf.constant(1, name="input_b")
c = tf.add(a,b, name="add_c")

sess = tf.Session()

print("a = ",sess.run(a))
print("c = ",sess.run(c))
       执行结果如下:

a =  [41]
c =  [88]
        代码中的公式为c=a+1,而上述结果中c≠1。说明在两次执行sess.run时,均是从最开始的输入开始计算,第一个sess.run虽然计算出了a,但这个a并没有作为第二个sess.run的输入a。

         如果想先执行sess.run(a),对a做一些操作或运算后,然后再继续算c,该怎么操作呢?

         第一个解决方法是,将a的值暂时保存下来。然后,在计算c时利用feed_dict将a替换为保存的a。将上述代码更改为:

import tensorflow as tf

a = tf.random_uniform([1],minval=0,maxval=100,dtype=tf.int32)
b = tf.constant(1, name="input_b")
c = tf.add(a,b, name="add_c")

sess = tf.Session()

a_tmp = sess.run(a)
print("a = ",a_tmp)#也可以对a进行其他操作
print("c = ",sess.run(c,feed_dict={a:a_tmp}))
          执行结果为:

a =  [42]
c =  [43]

      第二个解决方法是,将a和c同时计算,并输出,代码如下:

import tensorflow as tf

a = tf.random_uniform([1],minval=0,maxval=100,dtype=tf.int32)
b = tf.constant(1, name="input_b")
c = tf.add(a,b, name="add_c")

sess = tf.Session()

a_tmp,c_tmp = sess.run([a,c])#将a和c同时计算
print("a = ",a_tmp)
print("c = ",c_tmp)

       执行结果为:

a =  [83]
c =  [84]


        总结:在用sess.run执行op时,每次都是从输入开始完整的执行运算。除非中间某个变量被feed_dict操作替换。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值