Lepsza klasyfikacja sentymentu
W tym ćwiczeniu wracasz do problemu klasyfikacji sentymentu z rozdziału 1.
Dodasz do modelu większą złożoność i poprawisz jego dokładność. Użyjesz warstwy Embedding, aby wytrenować wektory słów na zbiorze treningowym, oraz dwóch warstw LSTM, które umożliwią śledzenie dłuższych tekstów. Dodasz też dodatkową warstwę Dense przed wyjściem.
To już nie jest prosty model, a trenowanie może chwilę potrwać. Z tego powodu dostępny jest wstępnie wytrenowany model – możesz załadować jego wagi metodą .load_weights() z klasy keras.models.Sequential. Model był trenowany przez 10 epok, a jego wagi są zapisane w pliku model_weights.h5.
W środowisku załadowane są następujące moduły: Sequential, Embedding, LSTM, Dropout, Dense.
To ćwiczenie jest częścią kursu
Rekurencyjne sieci neuronowe (RNN) do modelowania języka w Keras
Instrukcje do ćwiczenia
- Dodaj warstwę
Embeddingjako pierwszą warstwę modelu. - Dodaj drugą warstwę
LSTMz 64 jednostkami, która zwraca (returning) sekwencje. - Dodaj dodatkową warstwę
Densez 16 jednostkami. - Oceń model, aby wyświetlić dokładność na zbiorze treningowym.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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)))