我正在尝试在 Keras 中使用 LSTM 构建 seq2seq 模型。目前正在研究英语到法语对数据集-10k 对(原始数据集有 147k 对)。训练完成后,在尝试预测给定输入序列的输出时,模型预测相同的输出,而不管输入序列如何。还为编码器和解码器使用单独的嵌入层。我观察到的是,预测的单词只不过是数据集中最常用的单词,它们按频率的降序显示。例如:“我认识你”、“我们可以去吗?”、“跳出它”——对于所有这些输入序列,输出是——“je suis en train”(所有三个输出相同)。
任何人都可以帮助我,模型表现得像这样的原因可能是什么。我错过了一些基本的东西吗?
我尝试使用 batchsize=32, epoch=50,maxinp=8, maxout=8, embeddingsize=100 跟随。
encoder_inputs = Input(shape=(None, GLOVE_EMBEDDING_SIZE), name='encoder_inputs')
encoder_lstm1 = LSTM(units=HIDDEN_UNITS, return_state=True, name="encoder_lstm1" , stateful=False, dropout=0.2)
encoder_outputs, encoder_state_h, encoder_state_c = encoder_lstm1(encoder_inputs)
encoder_states = [encoder_state_h, encoder_state_c]
decoder_inputs = Input(shape=(None, GLOVE_EMBEDDING_SIZE), name='decoder_inputs')
decoder_lstm = LSTM(units=HIDDEN_UNITS, return_sequences=True, return_state=True, stateful=False,
name='decoder_lstm', dropout=0.2)
decoder_outputs, _, _ = decoder_lstm(decoder_inputs, initial_state=encoder_states)
decoder_dense = Dense(self.num_decoder_tokens, activation='softmax', name='decoder_dense')
decoder_outputs = decoder_dense(decoder_outputs)
self.model = Model([encoder_inputs, decoder_inputs], decoder_outputs)
print(self.model.summary())
self.model.compile(optimizer='rmsprop', loss='categorical_crossentropy')
Xtrain, Xtest, Ytrain, …Run Code Online (Sandbox Code Playgroud)