输入错误:不可用类型'list'或'numpy.ndarrary'

时间:2018-02-23 06:19:32

标签: python python-3.x list numpy tensorflow

我有一个tensorflow占位符定义为:

fs = tf.placeholder(tf.float32, shape=(nn,  mm))

此外,在代码中,我想要提供它。 我将使用shape = (nn, mm)获得一个numpy数组“功能”,我写道:

feed_dict.update({fs, features})

然而,我收到错误:

TypeError: Unhashable type"numpy.ndarray"

因为我已经可以将包含lenght = nn的列表提供给shape = (nn,)的占位符

所以在将numpy数组提供给占位符之前,我写了

features = features.tolist()   #to make them as a list, not numpy array!

再次,我得到了类似的错误:

TypeError: Unhashable type "list"

所以,我想知道如何将2d numpy数组提供给2d tensorflow占位符?

我还检查过它们都有np.float32tf.float32个数据类型! 我正在使用python3和tensorflow版本1.1

1 个答案:

答案 0 :(得分:2)

您的代码中有一个小错字。你写的地方:

feed_dict.update({fs, features})
你应该写的:

feed_dict.update({fs: features})

请注意逗号被冒号替换。

正在进行什么

在你的代码中,你不小心试图创建一个包含fsfeatures的集合,你要做的就是创建一个字典。为了放在一个集合中,python对象必须实现一个名为__hash__的方法。并非所有对象都实现此方法(出于好的理由)并且包括列表和numpy数组。因此,您收到有关"不可用类型的错误消息的原因"是因为你无意中试图创建一个包含features的集合。