Keras中RNN不定长输入的处理--padding and masking

在使用RNN based model处理序列的应用中,若是使用并行运算batch sample,咱们几乎必定会遇到变长序列的问题。spa

一般解决变长的方法主要是将过长的序列截断,将太短序列用0补齐到一个固定长度(例如max_length)。code

最后由n个sample组成的dataset能造成一个shape == (n, max_length)的矩阵。而后能够将这个矩阵传递到后续的模型中使用。blog

然而咱们能够很明显,若是用0或者其余整数补齐,势必会影响到模型自身(莫名其妙被输入不少个0,显然是有问题的)。有什么方法可以作到“可以使用一个二维矩阵做为输入数据集,从而达到并行化的同时,还能让RNN模型自行决定真正输入其中的序列的长度”。token

 

Embedding提供mask_zero来进行对padding为0的处理。当咱们构建一个Embedding Layer时,能够设置mask_zero=Trueget

encoder_inputs = Input(shape=(None,))
encoder_embedded = Embedding(num_input_tokens, embedding_size, mask_zero=True)(encoder_inputs)

 

更多阅读:Keras中关于Recurrent Network的Padding与Maskinginput

相关文章
相关标签/搜索