2017-03-17 71 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部分是我的輸入錯誤,因爲我從我的其他項目中部分複製了代碼。但將可訓練變爲真實真的有幫助! –

相關問題