НачатьНачать бесплатно

Улучшенная классификация тональности

В этом упражнении вы вернётесь к задаче классификации тональности текста, рассмотренной в главе 1.

Вы усложните модель и повысите её точность. Для этого используйте слой Embedding, чтобы обучить векторные представления слов на обучающей выборке, и два слоя LSTM, чтобы модель учитывала контекст в длинных текстах. Кроме того, вы добавите дополнительный слой Dense перед выходным.

Это уже не простая модель, и её обучение может занять некоторое время. Поэтому в среде доступна предобученная модель: загрузите её веса с помощью метода .load_weights() из класса keras.models.Sequential. Модель обучалась в течение 10 эпох, а её веса хранятся в файле model_weights.h5.

В среде загружены следующие модули: Sequential, Embedding, LSTM, Dropout, Dense.

Это упражнение является частью курса

Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras

Посмотреть курс

Инструкции к упражнению

  • Добавьте слой Embedding в качестве первого слоя модели.
  • Добавьте второй слой LSTM с 64 нейронами, возвращающий последовательности (returning sequences).
  • Добавьте дополнительный слой Dense с 16 нейронами.
  • Оцените модель и выведите точность на обучающей выборке.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# 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)))
Редактировать и запускать код