転移学習
埋め込み層を学習するとき、多くのパラメータを学習する必要があることを見ました。
この演習では、転移学習を使うと事前学習済みの重みをそのまま利用して更新しない(固定する)ことができ、埋め込み層のすべてのパラメータは固定され、モデルは他の層のパラメータだけを学習すればよいことを確認します。
関数 load_glove はすでに環境に読み込まれており、glove 行列を numpy.ndarray ベクトルとして取得します。レッスンのスライドで扱った関数を使って、この演習で用いる語彙に対し、埋め込み次元が200の glove ベクトルを取得します。
この演習はコースの一部です
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
演習の手順
- 事前定義された関数を使って glove ベクトルを読み込みます。
- 事前学習済みベクトルに対して初期化子
Constantを使用します。 - 出力層としてユニット数1の
Denseを追加します。 summaryを表示し、学習可能(trainable)パラメータを確認します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# 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.____