Трансферное обучение
Вы уже знаете, что при обучении слоя эмбеддингов (векторных представлений) требуется настраивать большое количество параметров.
В этом упражнении вы увидите, что при использовании трансферного обучения можно применять предобученные веса без их обновления. Это означает, что все параметры слоя эмбеддингов будут зафиксированы, и модели останется обучить только параметры остальных слоёв.
Функция load_glove уже доступна в среде выполнения и возвращает матрицу GloVe в виде вектора numpy.ndarray. Она использует метод, рассмотренный на слайдах урока, для получения векторов GloVe с 200 измерениями эмбеддинга для словаря, используемого в этом упражнении.
Это упражнение является частью курса
Рекуррентные нейронные сети (RNN) для языкового моделирования с Keras
Инструкции к упражнению
- Используйте заранее определённую функцию для загрузки векторов GloVe.
- Примените инициализатор
Constantк предобученным векторам. - Добавьте выходной слой типа
Denseс одним нейроном. - Выведите сводку модели и проверьте количество обучаемых параметров.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Load the glove pre-trained vectors
glove_matrix = ____('glove_200d.zip')
# Create a model with embeddings
model = Sequential(name="emb_model")
model.add(Embedding(input_dim=vocabulary_size + 1, output_dim=wordvec_dim,
embeddings_initializer=____(glove_matrix),
input_length=sentence_len, trainable=False))
model.add(GRU(128))
model.add(____)
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Print the summaries of the model with embeddings
model.____