Keras输入变长序列

本文探讨了Keras在处理变长序列时的常见问题,包括序列的截断和填充操作。强调了在使用Embedding层时,设置参数以避免填充影响句子意义。同时指出,RNN层的mask_zero参数在实际应用中的影响不大,但使用和时需要注意不支持mask。若无Embedding,可以借助Mask层处理变长序列。
  • 发现有些代码处理文本时直接调用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值