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

时间:2017-03-17 07:04:55

标签: tensorflow nlp deep-learning keras keras-layer

我在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精度的结果,而使用Model的其他代码:

_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 个答案:

答案 0 :(得分:1)

我发现两个模型之间存在两个主要差异:

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