Inizia subitoInizia gratis

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

Visualizza corso

Istruzioni dell'esercizio

  • Aggiungi un livello Embedding come primo livello del modello.
  • Aggiungi un secondo livello LSTM con 64 unità che restituisca le sequenze.
  • Aggiungi un livello Dense extra 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)))
Modifica ed esegui il codice