有两个问题在这里引起问题:
第一个问题是该Session.run()
呼叫仅接受少量类型作为的键Feed_dict
。特别是, 支持将张量列表用作键,因此您必须将每个张量作为单独的键放置。*一种方便的方法是使用字典理解:
inputs = [tf.placeholder(...), ...]
data = [np.array(...), ...]
sess.run(y, Feed_dict={i: d for i, d in zip(inputs, data)})
第二个问题是10 * [tf.placeholder(...)]
Python中的语法创建了一个包含十个元素的列表,其中每个元素都是 (即,具有相同的name
属性,相同的id
属性,并且如果使用来比较列表中的两个元素,它们是引用相同的inputs[i] is inputs[j]
) 。这解释了为什么当您尝试使用列表元素作为键来创建字典时,最终得到一个包含单个元素的字典-因为所有列表元素都是相同的。
若要按预期创建10个不同的占位符张量,应改为执行以下操作:
inputs = [tf.placeholder(tf.float32, shape=(batch_size, input_size))
for _ in xrange(10)]
如果打印此列表的元素,您将看到每个元素都是具有不同名称的张量。