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
Oefeninstructies
- Voeg een
Embedding-laag toe als eerste laag van het model. - Voeg een tweede
LSTM-laag toe met 64 units die de sequentiesreturnt. - 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)))