開始使用免費開始

更好的情感分類

在這個練習中,你要回到第 1 章的情感分類問題。

你將替模型加入更多複雜度並提升其準確率。你會使用 Embedding 層在訓練集上訓練詞向量,並加入兩層 LSTM 來追蹤較長的文字。此外,你還會在輸出層前再加上一個額外的 Dense 層。

這已不再是簡單的模型,訓練可能需要一些時間。因此,你可以透過 keras.models.Sequential 類別的 .load_weights() 方法載入權重,使用已事先訓練好的模型。該模型以 10 個 epoch 訓練完成,其權重存放於 model_weights.h5 檔案中。

環境中已載入以下模組:SequentialEmbeddingLSTMDropoutDense

本練習屬於課程

使用 Keras 建立語言模型的循環神經網路(RNN)

檢視課程

練習說明

  • 在模型的第一層加入 Embedding 層。
  • 新增第二個 LSTM 層,單元數為 64,並設定回傳序列。
  • 再加入一個 Dense 層,單元數為 16。
  • 評估模型並列印訓練集上的準確率。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# 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)))
編輯並執行程式碼