我在Keras中找到了两种可能的RNN RNN可变大小输入序列处理方案。 解决方案之一:
input = Input(shape=(None, num_classes))
然后我可以将任何序列大小作为训练和验证的输入。
解决方案二:
input = Input(shape=(max_seq_length, num_classes))
...
pad_sequences(input_data, maxlen=max_seq_length, padding='post')
建议采用哪种解决方案?
我认为这两者的好处。我在解决方案二中看到的是输入大小的验证。输入不能大于max_seq_size,而且我可以决定填充类型(前/后)和序列太大的时序相同。
使用解决方案进行了哪种填充和修剪? pad_sequence的默认参数?
我已经对两种解决方案的训练模型的时间进行了基准测试,而且大致是同一时间。我想,在引擎盖下它是一样的,就像max_seq_length是根据训练序列的最大长度计算的,我是对的吗?
感谢您的任何澄清!
答案 0 :(得分:1)
解决方案之一根本没有填充或修剪。它按顺序采用顺序并处理它。该模型完全独立于序列长度。
在解决方案二中,最好的办法是添加0 iron
图层。它将简单地跳过处理填充值。