2017-03-17 3 views
1

J'ai essayé un modèle lstm simple dans keras pour faire une simple analyse de sentiment en utilisant le jeu de données imdb en utilisant à la fois le modèle Sequential et le modèle Model, et il s'avère que ce dernier donne un résultat plus mauvais. Voici mon code:Pourquoi le modèle Keras Sequential a-t-il donné un résultat différent par rapport au modèle 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']) 

Il donne un résultat d'environ 0,6 de précision dans la première époque, tandis que l'autre code Util modèle:

_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']) 

et donne une précision de 0.5 à la suite de la première époque et ne change jamais après.

Une raison pour cela, ou est-ce que je fais quelque chose de mal? Merci à l'avance

Répondre

1

Je vois deux principales différences entre vos deux modèles:

  1. Vous avez défini les incorporations du second modèle comme « trainable = False ». Vous avez donc probablement beaucoup moins de paramètres pour optimiser le second modèle par rapport au premier. Le LSTM retourne la séquence entière dans le second modèle, donc la forme des sorties sera différente, donc je ne vois pas comment vous pouvez comparer les deux modèles, ils ne font pas la même chose.
+0

Merci pour l'aperçu, la partie return_sequence est ma faute de frappe car j'ai copié le code en partie de mon autre projet. Mais le changement du trainable en True aide vraiment !! –