Tensorflow 为什么Keras序列模型给出的结果与模型不同?

Tensorflow 为什么Keras序列模型给出的结果与模型不同?,tensorflow,nlp,deep-learning,keras,keras-layer,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')) mode

我在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将在第二个模型中返回整个序列,因此输出形状将不同,因此我不知道如何比较这两个模型,它们做的事情不同

  • 谢谢你的洞察力,返回序列部分是我的打字错误,因为我从我的另一个项目复制了部分代码。但是把可训练的变成真正的真的很有帮助!!