本人在使用Keras框架编写RNN中LSTM网络时,遇到以下一个棘手问题:

本人上网查了好多资料,发现,大致分为这几种情况:
- 输入到模型里的数据没严格转换成 np.arry()形式,
- 矩阵没对齐,个别行成员数量与其他不一致,不如0的缺省等。
- 数据dtype不对或者说不一致,应该统一成 np.float64, int或者其他。
这里重点讲第一种,也是我遇到的!
这里要求是彻底的转换,不含嵌套,比如arry([[list([12.0, 25.0, 32.0, 47.0, 54.0, 66.0]), list([20.0, 21.0, 36.0, 41.0, 53.0, 69.0])]), 这种情况不彻底,会继续报错。
应该转换成:arry([[12.0, 25.0, 32.0, 47.0, 54.0, 66.0], [20.0, 21.0, 36.0, 41.0, 53.0, 69.0]].
换句话说,arry里面的应该只有一种且只能有一个容器类型,arry([[list([12.0, 25.0, 32.0, 47.0, 54.0, 66.0]), list([20.0, 21.0, 36.0, 41.0, 53.0, 69.0])])虽然内部是一种list容器,是一维的,但有两个,他们相当于独立的; 而arry([[12.0, 25.0, 32.0, 47.0, 54.0, 66.0], [20.0, 21.0, 36.0, 41.0, 53.0, 69.0]]显然内部只有一个list容器,是二维的。

本文详细解析了在使用Keras框架搭建LSTM网络时常见的数据输入错误,特别是np.array()转换不当导致的问题,并提供了正确的数据格式转换方法。
1556

被折叠的 条评论
为什么被折叠?



