与 Model 模型相比,为什么 Keras Sequential 模型给出了不同的结果?

Why did the Keras Sequential model give a different result compared to Model model?

我在 keras 中尝试了一个简单的 lstm 模型,使用顺序模型和模型模型使用 imdb 数据集进行简单的情感分析,结果发现后者的结果更差。这是我的代码:

model = Sequential()
model.add(Embedding(top_words, embedding_vector_length, input_length=max_review_length))
model.add(LSTM(100))
model.add(Dense(2, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop', metrics=['accuracy'])

它在第一个时期给出了大约 0.6 的准确度结果,而其他使用模型的代码:

_input = Input(shape=[max_review_length], dtype='int32')
embedded = Embedding(
        input_dim=top_words,
        output_dim=embedding_size,
        input_length=max_review_length,
        trainable=False,
        mask_zero=False
    )(_input)
lstm = LSTM(100, return_sequences=True)(embedded)
probabilities = Dense(2, activation='softmax')(lstm)
model = Model(_input, probabilities)
model.compile(loss='categorical_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

第一个纪元的结果是 0.5 的准确度,之后永远不会改变。

有什么原因吗,还是我做错了什么?提前致谢

我看到你的两个模型之间有两个主要区别:

  1. 您已将第二个模型的嵌入设置为 "trainable=False"。因此,与第一个模型相比,您优化第二个模型的参数可能要少得多。
  2. LSTM 在第二个模型中返回整个序列,因此输出形状会不同,所以我看不出如何比较这两个模型,它们做的不是同一件事。