在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]
本文介绍了在TensorFlow中使用sess.run时遇到的问题及两种解决方案:通过feed_dict传递值和同时计算多个操作。这两种方法有助于实现具有依赖关系的操作序列。
1120

被折叠的 条评论
为什么被折叠?



