...
print('Build model...')
model = Sequential()
model.add(Embedding(max_features, 128))
model.add(LSTM(size, return_sequences=True, dropout_W=0.2 dropout_U=0.2))
model.add(GlobalAveragePooling1D())
model.add(Dense(1))
model.add(Activation('sigmoid'))
....
我需要能够在LSTM层后,对样本中所有时间步长的向量进行平均值或最大值,并将此平均或最大向量传递给Keras中的密集层。我认为
timedistributedmerge
可以做到这一点,但它已被弃用。使用return_sequences=True
,我可以获得LSTM层后样本中所有时间步长的向量。然而,GlobalAveragePooling1D()
不兼容掩码,并且它考虑所有时间步长,而我仅需要非掩码时间步长。我看到有人推荐Lambda
层,但这些也不考虑掩码。任何帮助将不胜感激。
x
中的掩码值是否等于零!因此,这个实现将会得出错误的结果。 - pirx
的求和操作假设掩码值为零。你是对的。这可能可以通过使用mask
索引x
来修复,但我必须先测试一下。 - nemo