-
发现有些代码处理文本时直接调用
keras.preprocessing.sequence.pad_sequences(maxlen),这个函数将比这个长的序列截断,比这个短的序列补零。同时后面RNN,LSTM等模型也没做任何处理,这样显然有问题,常规神经网络的一个主要问题就是处理变长序列时要截断或补零,这就是RNN出现的一个原因。
同时,如果用embedding的话,一般要保存的是句子中词的索引,这时候如果补零的话会出很大问题,相当于直接篡改了句子的意思。 -
使用embedding的情况下,Keras中的Embedding层有一个参数
mask_zero,默认是False,只要设置成True就行了。

再看看RNN层怎么说的:
-
实际使用时发现很多程序中并不考虑补零的问题,我自己测试时mask_zero为Ture或False对结果也没太大。而且一般keras中不使用LSTM()或GRU(),而是更快的CuDNNLSTM()和CuDNNGRU(),后两者是不支持mask的,如果Embedding()的参数mash_zero设为True,那model.compile()时就会报错。 -
不使用Embedding
Keras输入变长序列
最新推荐文章于 2022-08-30 00:21:40 发布
本文探讨了Keras在处理变长序列时的常见问题,包括序列的截断和填充操作。强调了在使用Embedding层时,设置参数以避免填充影响句子意义。同时指出,RNN层的mask_zero参数在实际应用中的影响不大,但使用和时需要注意不支持mask。若无Embedding,可以借助Mask层处理变长序列。

最低0.47元/天 解锁文章
358

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



