Una classificazione del sentiment migliore
In questo esercizio torni al problema di classificazione del sentiment visto nel Capitolo 1.
Aggiungerai più complessità al modello per migliorarne l'accuratezza. Userai un livello Embedding per addestrare i vettori di parole sul training set e due livelli LSTM per gestire testi più lunghi. Inoltre, aggiungerai un ulteriore livello Dense prima dell'output.
Non è più un modello semplice, e l'addestramento può richiedere tempo. Per questo motivo è disponibile un modello pre-addestrato caricando i suoi pesi con il metodo .load_weights() della classe keras.models.Sequential. Il modello è stato addestrato per 10 epoche e i suoi pesi sono nel file model_weights.h5.
Nell'ambiente sono già caricati i seguenti moduli: Sequential, Embedding, LSTM, Dropout, Dense.
Questo esercizio fa parte del corso
Reti Neurali Ricorrenti (RNN) per il Language Modeling con Keras
Istruzioni dell'esercizio
- Aggiungi un livello
Embeddingcome primo livello del modello. - Aggiungi un secondo livello
LSTMcon 64 unità cherestituiscale sequenze. - Aggiungi un livello
Denseextra con 16 unità. - Valuta il modello per stampare l'accuratezza sul training set.
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# Build and compile the model
model = Sequential()
model.add(____(vocabulary_size, wordvec_dim, trainable=True, input_length=max_text_len))
model.add(____(64, return_sequences=____, dropout=0.2, recurrent_dropout=0.15))
model.add(LSTM(64, return_sequences=False, dropout=0.2, recurrent_dropout=0.15))
model.add(____(16))
model.add(Dropout(rate=0.25))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Load pre-trained weights
model.load_weights('model_weights.h5')
# Print the obtained loss and accuracy
print("Loss: {0}\nAccuracy: {1}".format(*model.____(X_test, y_test, verbose=0)))