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絡みもですね…
コメント
私も同様のエラーで悩んでいましたが、本記事を参考に解決できました。
ありがとうございました。
コメントありがとうございます。それはお役に立ててよかったです。