当前位置: 首页 > 面试题库 >

在TensorFlow中将列表馈入feed_dict

何向荣
2023-03-14
问题内容

我正在尝试将列表传递到feed_dict,但是这样做很麻烦。说我有:

inputs = 10 * [tf.placeholder(tf.float32, shape=(batch_size, input_size))]

输入被输入到outputs我要计算的某些函数中。因此要在tensorflow中运行它,我创建了一个会话并运行以下命令:

sess.run(outputs, feed_dict = {inputs: data}) 
#data is my list of inputs, which is also of length 10

但是我得到一个错误,TypeError: unhashable type: 'list'. 但是,我可以像这样传递数据元素:

sess.run(outputs, feed_dict = {inputs[0]: data[0], ..., inputs[9]: data[9]})

所以我想知道是否有办法解决这个问题。我也尝试过构造一个字典(使用for循环),但是这导致字典只有一个元素,它们的关键是:
tensorflow.python.framework.ops.Tensor at 0x107594a10


问题答案:

有两个问题在这里引起问题:

第一个问题是该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)]

如果打印此列表的元素,您将看到每个元素都是具有不同名称的张量。

编辑: 您现在可以将 元组* 作为a的键传递feed_dict,因为它们可以用作字典键。



 类似资料:
  • 某些要素列的数据类型为。它们的长度可以不同。我想将此列编码为一个多热点分类特性,并将其提供给。我尝试了以下操作,但错误

  • 问题内容: 在python中将列表列表加入单个列表(或迭代器)的语法是否简短? 例如,我有一个如下列表,我想遍历a,b和c。 我能想到的最好的方法如下。 问题答案:

  • 问题内容: 我有5个长度相同的列表,我想将它们写到CSV的5列中。到目前为止,我只能使用以下代码将一个代码写入一列: 如果我添加另一个循环,它只会将该列表写入同一列。有人知道获得五个单独列的好方法吗? 问题答案: 将它们更改为行 然后就

  • 我有5个相同长度的列表,我想把它们写在CSV的5列中。到目前为止,我只能用以下代码在一列中写一个: 如果我为循环添加另一个

  • 我对使用UML序列图建模我的系统有一个疑问(是的,我知道状态机图做这件事更简单,但我需要序列图)。 考虑一个简单的列车车门系统,其中有(a)一个自动控制器,它向(B)一个机械开启器(一个致动器)发出命令来开启或关闭车门。该系统有一些(C)传感器--发送反馈,通知列车是否停车;列车是否在站台对线;有无紧急情况;如果门被打开、关闭或部分打开/关闭;如果有一个人或物体在门口-和(D)门本身。

  • 问题内容: 这是否可能在另一个数据结构中包含一个数据结构?到目前为止,我只能在列表中插入字符串或数字。 所需的数据结构将是具有一个列表,其中每个组件也是一个列表。 问题答案: 简单答案:不,Redis列表成员只能是字符串。 复杂的答案:字符串可以做很多事情。您可以使用多种不同的格式(JSON,XML,CSV,特定于语言的序列化等)将列表序列化为字符串。Redis可以容纳很大的字符串值,因此您可以只