一. 問題背景
最近想實踐“字嵌入+LSTM+CRF”的分詞方法,由於比較懶散, 沒有找到字向量的資源,然后,就自己用word2vec和知乎的一次評測數據訓練了一份字向量。然后,在搭建LSTM的過程中,執行一下代碼時:
-
data = np.array(data)
-
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
感謝大大的博客。