与 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 的准确度,之后永远不会改变。
有什么原因吗,还是我做错了什么?提前致谢
我看到你的两个模型之间有两个主要区别:
- 您已将第二个模型的嵌入设置为 "trainable=False"。因此,与第一个模型相比,您优化第二个模型的参数可能要少得多。
- LSTM 在第二个模型中返回整个序列,因此输出形状会不同,所以我看不出如何比较这两个模型,它们做的不是同一件事。
我在 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 的准确度,之后永远不会改变。
有什么原因吗,还是我做错了什么?提前致谢
我看到你的两个模型之间有两个主要区别:
- 您已将第二个模型的嵌入设置为 "trainable=False"。因此,与第一个模型相比,您优化第二个模型的参数可能要少得多。
- LSTM 在第二个模型中返回整个序列,因此输出形状会不同,所以我看不出如何比较这两个模型,它们做的不是同一件事。