1. ホーム
  2. Error

TypeError: 'float' オブジェクトは整数として解釈できません。

2022-02-18 16:17:46

I. 問題の背景

       最近、単語埋め込み+LSTM+CRFの手法を実践しようと思ったが、単語ベクトルのリソースが見つからず、お手上げ状態だった。その後、LSTMを構築する過程で、コードを実行する際に

data = np.array(data)
data = data.reshape((100/2, 16, 8))

        で問題が発生しました。

TypeError: 'float' object cannot be interpreted as an integer

       どうなってるんだ、100/2は明らかに整数だろう!?

II. 理由

       その後、インターネットで情報を調べたところ、python3の問題であり、python2にはこの問題はないことがわかりました。 参考

       具体的にはどうなっているのでしょうか?

       Python2では、'integer / integer = integer' で、上の100 / 2で、50となり、整数になることが判明しました。

       そしてpython3では、'integer/integer = floating point'で、100 / 2 = 50.0となりますが、'//'を使うことで元のpython2の'/'の効果を実現します。

III. 解決策

       理由がわかったところで、浮動小数点を整数に変換する強制変換や、'//'を直接使うなど、いくつかの解決策があります。

IV. 参考文献

https://blog.csdn.net/amoscn/article/details/78321137

素晴らしいブログをありがとうございました。