model = Sequential()
model.add(Embedding(input_dim=wordEmbeddings.shape[0], output_dim=wordEmbeddings.shape[1], input_length=n_in, weights=[wordEmbeddings], trainable=False, **zero_mask=True**))
model.add(Dropout(0.3))
model.add(Bidirectional(LSTM(200, return_sequences=True, recurrent_dropout=0.5, dropout=0.5, name='bilstm1')))
model.add(TimeDistributed(Dense(100, activation="relu")))
model.summary()
model.add(MaxPooling1D(pool_size=7, strides=1))
crf = CRF(n_out)
model.add(crf)
model.compile(optimizer="rmsprop", loss=crf_loss, metrics=[crf_viterbi_accuracy])
模型摘要
此模型工作正常。但是我损失函数的值越来越小。
因此,我在嵌入层中更改了属性zero_mask = True并尝试训练模型。但随后出现如下错误。
“屏蔽不支持MaxPooling1D。”
任何对此表示感谢的帮助。
答案 0 :(得分:0)
池层的替代方案:
GlobalMaxPooling1D()
+ Reshape((1, 100))
Lambda(lambda x: K.max(x, axis=1, keepdims=True))
如果丢失很奇怪,那么仔细检查数据范围可能是个好主意。