Aan de slagGa gratis aan de slag

Betere sentimentclassificatie

In deze oefening ga je terug naar het sentimentclassificatieprobleem uit Hoofdstuk 1.

Je gaat meer complexiteit toevoegen aan het model en de nauwkeurigheid verbeteren. Je gebruikt een Embedding-laag om woordvectoren te trainen op de trainingsset en twee LSTM-lagen om langere teksten te kunnen volgen. Ook voeg je een extra Dense-laag toe vóór de output.

Dit is niet langer een simpel model en het trainen kan even duren. Daarom is er een voorgetraind model beschikbaar door de gewichten te laden met de methode .load_weights() van de klasse keras.models.Sequential. Het model is getraind met 10 epochs en de gewichten staan in het bestand model_weights.h5.

De volgende modules zijn in de omgeving geladen: Sequential, Embedding, LSTM, Dropout, Dense.

Deze oefening maakt deel uit van de cursus

Recurrent Neural Networks (RNN's) voor taalmodellen met Keras

Cursus bekijken

Oefeninstructies

  • Voeg een Embedding-laag toe als eerste laag van het model.
  • Voeg een tweede LSTM-laag toe met 64 units die de sequenties returnt.
  • Voeg een extra Dense-laag toe met 16 units.
  • Evalueer het model om de nauwkeurigheid op de trainingsset te printen.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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)))
Code bewerken en uitvoeren