始める無料で始める

より良い感情分類

この演習では、第1章で扱った感情分類の課題に戻ります。

モデルにさらに複雑さを加えて、精度を高めていきます。学習データ上で単語ベクトルを学習するために Embedding レイヤーを使い、長いテキストに対応するために 2 つの LSTM レイヤーを用います。さらに、出力の前に追加の Dense レイヤーを入れます。

もはや単純なモデルではないため、学習には時間がかかる場合があります。そのため、keras.models.Sequential クラスの .load_weights() メソッドで重みを読み込める、事前学習済みモデルを用意しています。モデルは 10 エポックで学習され、その重みは model_weights.h5 に保存されています。

環境には次のモジュールが読み込まれています: Sequential, Embedding, LSTM, Dropout, Dense

この演習はコースの一部です

Kerasで学ぶ言語モデリングのためのRecurrent Neural Networks (RNNs)

コースを見る

演習の手順

  • モデルの最初のレイヤーとして Embedding レイヤーを追加します。
  • 64 ユニットでシーケンスを return する 2 つ目の LSTM レイヤーを追加します。
  • 16 ユニットの追加の Dense レイヤーを追加します。
  • モデルを評価して、学習データに対する精度を表示します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# 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)))
コードを編集して実行