2017-03-17 72 views
1

我已经尝试了keras中的简单lstm模型,使用imdb数据集使用Sequential模型和Model模型进行简单的情感分析,结果发现后者给出了更差的结果。这里是我的代码:为什么Keras Sequential模型与Model模型相比有不同的结果?

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

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

  1. 您已设置了第二模式的嵌入物为“可训练=假”。因此,与第一个模型相比,您可能需要更少的参数来优化第二个模型。
  2. LSTM正在返回第二个模型中的整个序列,因此输出形状将会有所不同,所以我没有看到如何比较这两个模型,它们没有做同样的事情。
+0

谢谢你的洞察力,return_sequence部分是我的输入错误,因为我从我的其他项目中部分复制了代码。但将可训练变为真实真的有帮助! –

相关问题