我有一个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.float32
和tf.float32
个数据类型!
我正在使用python3和tensorflow版本1.1
答案 0 :(得分:2)
您的代码中有一个小错字。你写的地方:
feed_dict.update({fs, features})
你应该写的:
feed_dict.update({fs: features})
请注意逗号被冒号替换。
正在进行什么
在你的代码中,你不小心试图创建一个包含fs
和features
的集合,你要做的就是创建一个字典。为了放在一个集合中,python对象必须实现一个名为__hash__
的方法。并非所有对象都实现此方法(出于好的理由)并且包括列表和numpy数组。因此,您收到有关"不可用类型的错误消息的原因"是因为你无意中试图创建一个包含features
的集合。