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


一. 問題背景

       最近想實踐“字嵌入+LSTM+CRF”的分詞方法,由於比較懶散, 沒有找到字向量的資源,然后,就自己用word2vec和知乎的一次評測數據訓練了一份字向量。然后,在搭建LSTM的過程中,執行一下代碼時:

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

        遇到了這個問題:

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

       emmm,這是咋回事, 100/2明明是整數啊

二. 原因

       后來在網上查閱了一些資料,發現原來是python3的問題, python2是不存在這種問題滴,參考的文章鏈接請看參考

       具體是怎么回事呢?

       原來是這樣的,在python2中, '整數 / 整數 = 整數',以上面的 100 / 2 就會等於 50, 並且是整數。

       而在python3中, ‘整數/整數 = 浮點數’, 也就是100 / 2 = 50.0, 不過,使用 '//'就可以達到原python2中'/'的效果。

三. 解決方案

       既然知道原因了, 解決方案就有很多了, 可以進行強制轉換,把浮點型轉變成整型,也可以直接使用'//'進行運算。

四. 參考

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

感謝大大的博客。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM