tensorflow将整数传递给图形

时间:2017-01-30 07:22:37

标签: tensorflow

我需要在图表中循环不同的时间。我无法通过feed_dict传递整数变量。

rough1 = tf.Graph()
with rough1.as_default():
    st = tf.placeholder(tf.float32,shape = ())
    d = tf.Variable(0)   
    for i in range(st):
        d = tf.add(d,1)

with tf.Session(graph = rough1) as sess:
    sess.run(tf.initialize_all_variables())
    s = sess.run([d], feed_dict={st:3})
    print s 

2 个答案:

答案 0 :(得分:0)

构建Tensorflow图时,在调用tf.Session.run之前,实际上不会对图表进行评估。这样做的结果是像range这样的Python结构无法通过调用Tensor来检查除{/ 1>之外的run() 的值。在这里,range(st)要求st的值是Python已知的整数,但在图实际执行之前,st的值是未知的。

换句话说:构建图表的代码不得依赖于该图表的评估。

但是在这里,你可以使用Python整数而不是Tensor,一切正常:

rough1 = tf.Graph()
with rough1.as_default():
  d = tf.Variable(0)   
for i in range(3):
    d = tf.add(d,1)

with tf.Session(graph = rough1) as sess:
  sess.run(tf.initialize_all_variables())
  s = sess.run([d])
  print s

希望有所帮助!

答案 1 :(得分:0)

试试这个,看看它是不是你想要的。

st=1
rough1 = tf.Graph()
with rough1.as_default():
  d = tf.Variable(0)   
for i in range(st):
    d = tf.add(d,1)

with tf.Session(graph = rough1) as sess:
sess.run(tf.initialize_all_variables())
  s = sess.run([d])
  print s