開始使用免費開始

梯度消失問題

另一種可能的梯度問題是梯度消失,也就是趨近於 0。這個問題更難解,因為不容易偵測。如果損失函式沒有在每一步都改善,是因為梯度變成 0、權重因此沒有更新?還是因為模型本身學不到東西?

這個問題在需要長期記憶(較長句子)的 RNN 模型中更常見。

在本練習中,你會在較長句子的 IMDB 資料上觀察這個問題。資料已載入到變數 Xy,並且類別 SequentialSimpleRNNDense 以及 matplotlib.pyplot(命名為 plt)也已可用。模型已預先訓練 100 個 epoch,權重與訓練歷程分別儲存在檔案 model_weights.h5 與變數 history 中。

本練習屬於課程

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

檢視課程

練習說明

  • 在模型中加入一個 SimpleRNN 層。
  • 使用方法 .load_weights() 將預先訓練的權重載入模型。
  • 將訓練資料的準確率(屬性 'acc')加入到圖上。
  • 使用方法 .show() 顯示圖表。

動手互動練習

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

# Create the model
model = Sequential()
model.add(____(units=600, input_shape=(None, 1)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy'])

# Load pre-trained weights
model.____('model_weights.h5')

# Plot the accuracy x epoch graph
plt.plot(history.history[____])
plt.plot(history.history['val_acc'])
plt.legend(['train', 'val'], loc='upper left')
plt.____()
編輯並執行程式碼