一. 问题背景
最近想实践“字嵌入+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
感谢大大的博客。