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

ヨメレバCSS
オリジナルCSS


※本サイトはアフィリエイトプログラムによる収益を得ています。
 ページ内のリンクがアフィリエイトリンクの場合があります。

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

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

スポンサーリンク
GoogleAdSence レクタングル(大)

解決方法

 端的に言うと、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絡みもですね…

スポンサーリンク
GoogleAdSence レクタングル(大)

シェアする

スポンサーリンク
GoogleAdSence レクタングル(大)

コメント

  1. daigo より:

    私も同様のエラーで悩んでいましたが、本記事を参考に解決できました。
    ありがとうございました。