tf.while_loop - ValueError:这两个结构的元素数量不同
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tf.while_loop - ValueError:这两个结构的元素数量不同相关的知识,希望对你有一定的参考价值。
我正在尝试在Tensorflow中执行以下操作 -
import tensorflow as tf
graph = tf.Graph()
with graph.as_default():
i = tf.Variable(0)
sol = tf.Variable(0)
def cond(i, sol):
return tf.less(i, 2)
def body(i, sol):
i = tf.add(i, 1)
sol = tf.add(sol, 1)
tf.while_loop(cond, body, [i, sol])
with tf.Session(graph=graph) as session:
tf.global_variables_initializer().run()
result = session.run(sol, feed_dict={})
print result
我无法理解错误消息中的两个“结构”是什么。我想最终根据tf.Placeholder(上面代码中的'i')的值创建一个'tf.while_loop'和'condition'。
答案
你应该将return
添加到body
函数:
def body(i, sol):
i = tf.add(i, 1)
sol = tf.add(sol, 1)
retrun [i, sol]
但我认为您还应该将代码更改为类似的代码
graph = tf.Graph()
with graph.as_default():
i = tf.Variable(0)
sol = tf.Variable(0)
def cond(i, sol):
return tf.less(i, 2)
def body(i, sol):
i = tf.add(i, 1)
sol = tf.add(sol, 1)
return [i, sol]
result = tf.while_loop(cond, body, [i, sol])
with tf.Session(graph=graph) as session:
tf.global_variables_initializer().run()
result = session.run(result, feed_dict={})
print(result[1])
因为tf.while
只是图表中的节点,你应该运行它,否则你将得不到任何结果。
以上是关于tf.while_loop - ValueError:这两个结构的元素数量不同的主要内容,如果未能解决你的问题,请参考以下文章
没有为任何变量提供渐变来增加tf.while_loop中的Loss值
tf.while_loop - ValueError:这两个结构的元素数量不同