パラメータ数の比較
one-hot 表現は非常にスパースで、単語の表現として適していないことを学びました。Embedding レイヤーを使うと密なベクトル表現が得られますが、学習すべきパラメータ数が多くなるという側面もあります。
この演習では、embeddings と one-hot エンコーディングを用いた2つのモデルのパラメータ数を比較し、違いを確認します。
環境にはすでに model_onehot が読み込まれており、keras からの Sequential、Dense、GRU も利用できます。最後に、vocabulary_size=80000 と sentence_len=200 のパラメータも読み込まれています。
この演習はコースの一部です
Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)
演習の手順
keras.layersからEmbeddingレイヤーをインポートします。- Embedding レイヤーでは、入力次元に語彙サイズ+1、入力長に文の長さを指定します。
- モデルをコンパイルします。
- Embedding を用いたモデルのサマリーを表示します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Import the embedding layer
from tensorflow.keras.layers import ____
# Create a model with embeddings
model = Sequential(name="emb_model")
model.add(Embedding(input_dim=____, output_dim=wordvec_dim, input_length=____, trainable=True))
model.add(GRU(128))
model.add(Dense(1))
model.____(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Print the summaries of the one-hot model
model_onehot.summary()
# Print the summaries of the model with embeddings
model.____