Эмбеддинги повышают качество модели
Улучшает ли слой эмбеддинга (векторного представления) точность модели? Проверим это на тех же данных IMDB.
Модель уже обучена на 10 эпохах — так же, как и предыдущая модель с ячейкой simpleRNN. Для сравнения моделей в среде доступны тестовая выборка (X_test, y_test), а также старая модель simpleRNN_model. Точность старой модели загружена в переменную acc_SimpleRNN.
Все необходимые модули и функции загружены в среде: Sequential() из keras.models, Embedding и Dense из keras.layers, а также SimpleRNN из keras.layers.
Это упражнение является частью курса
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras
Инструкции к упражнению
- Добавьте слой эмбеддинга в модель.
- Вычислите точность модели и сохраните результат в переменную
acc_embeddings. - Выведите точность старой и новой моделей.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create the model with embedding
model = Sequential(name="emb_model")
model.add(____(input_dim=max_vocabulary, output_dim=wordvec_dim, input_length=max_len))
model.add(SimpleRNN(units=128))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Load pre-trained weights
model.load_weights('embedding_model_weights.h5')
# Evaluate the models' performance (ignore the loss value)
_, ____ = model.evaluate(X_test, y_test, verbose=0)
# Print the results
print("SimpleRNN model's accuracy:\t{0}\nEmbeddings model's accuracy:\t{1}".format(acc_simpleRNN, ____))