[TensorFlow][Python] TypeError: unhashable type: ‘numpy.ndarray’になるとき

 TensorFlowでfeed_dictを指定したときに、「TypeError: unhashable type: 'numpy.ndarray'」というエラーが出てしまったとき。

 だいぶ理由がわからなかったですけどただのミスでした…

スポンサーリンク

解決方法

 端的に言うと、feed_dictのキーに指定しているxにnumpy.ndarray型の変数を入れてしまっていたのに気がつかなかったという…

x = tf.placeholder(tf.float32)
...
x = image.eval()
...
sess.run(y, feed_dict={x:images})

みたいな感じ。imageはファイルを読み込んでいたTensor。

 image.eval()でndarrayが返ってきていたんですが、feed_dictのほうのxはただのキー文字列だと思っていたのと、for文内で置き換えられていたから気が付かなくて、さらにnumpy.ndarrayを扱っているつもりがなくて結果全然気が付かなかった…

 エラー内容的にはそのままの内容で、ndarrayだとdict型のキーにできないということなのでしょう…

 これで学んだのは、xはもともとtensorflow.placeholderで作られているもので、その変数がそのままハッシュの役割を果たしてキーになっていたのだなということと、Tensorを扱っているだけのつもりのときにもnumpy.ndarrayがあるということ。

 ndarrayで引っかかったら疑うべきところはTensor絡みもですね…

スポンサーリンク

シェアする

スポンサーリンク