所以我有一个用Keras构建的文本分类模型。我一直在尝试填充各种长度的序列,但是Keras函数pad_sequences()
刚返回了零。
我发现,如果您有一个像下面这样的numpy数组,它就可以正常工作。但是一旦元素变得像第二个数组一样成为浮点数或小数,它就会变成零。
x = [[1, 2], [3,4,5], [4], [7,8,9,10]]
print pad_sequences(x, padding='post')
输出:
[[ 1 2 0 0]
[ 3 4 5 0]
[ 4 0 0 0]
[ 7 8 9 10]]
但是
x = [[.1, .2], [.3,.4,.5], [.4], [.7,.8,.9,.010]]
print pad_sequences(x, padding='post')
输出:
[[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]
[ 0 0 0 0]]
这:
x = [[.1, .2], [.3,.4,.5], [.4], [.7,.8,.9,.010]]
print pad_sequences(x, padding='post', value=99)
输出:
[[ 0 0 99 99]
[ 0 0 0 99]
[ 0 99 99 99]
[ 0 0 0 0]]
所以我想这个函数只会忽略浮点数/小数。我有办法解决这个问题吗?
答案 0 :(得分:2)
这是由于pad_sequences
函数中考虑的默认数据类型是int32
引起的。因此,所有值都将强制转换为整数(在这种情况下为零)。要解决此问题,请传递dtype='float32'
参数:
pad_sequences(x, padding='post', value=99, dtype='float32')