CNN 和RNN 中input 长度不一致问题

Posted 白婷的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CNN 和RNN 中input 长度不一致问题相关的知识,希望对你有一定的参考价值。

转自:https://www.jianshu.com/p/86d667ee3c62,感谢分享!

pad_sequences & Masking layer

上面提到,文本数据也可以用CNN来处理。很多人有疑问,CNN的输入通常是一个(图像)矩阵,而文本中句子或者文章的长度不一,CNN如何将长短不一的输入转化成矩阵呢?
答案是pad_sequences

keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype=‘int32‘,
    padding=‘pre‘, truncating=‘pre‘, value=0.)

sequences: 所有的句子
maxlen: 把所有句子的长度都定为maxlen,如果是None,则maxlen自动设置为sequences中最长的那个
padding: 在句子前端(pre)或后端(post)填充
truncating: 截断过长的句子,从前端(pre)或者后端(post)截断
value: 填充的数值

假设我们使用0填充,那么多无用的0,会不会影响结果呢?
对于CNN来说,是不影响的。
对于RNN也需要pad_sequences,此时填充的0是多余的,就需要使用Masking layer忽略其中的0值。

model = Sequential()
model.add(Masking(mask_value=0., input_shape=(timesteps, features)))
model.add(LSTM(32))


作者:fighting41love
链接:https://www.jianshu.com/p/86d667ee3c62
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以上是关于CNN 和RNN 中input 长度不一致问题的主要内容,如果未能解决你的问题,请参考以下文章

tf识别非固定长度图片ocr(数字+字母 n位长度可变)- CNN+RNN+CTC

RNN & Word2Vec

基于cnn和rnn的文本分类实践

基于cnn和rnn的文本分类实践

深入浅出RNN

RNN 和 CNN-RNN 不能正确训练,总是预测一类