小编Sun*_*nil的帖子

keras - seq2seq 模型为所有测试输入预测相同的输出

我正在尝试在 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)

python lstm keras seq2seq

5
推荐指数
1
解决办法
2573
查看次数

标签 统计

keras ×1

lstm ×1

python ×1

seq2seq ×1