為網路新增層
你已經看過如何嘗試更寬的網路。在這個練習中,你要改用更深的網路(更多隱藏層)。
同樣地,你有一個名為 model_1 的基準模型作為起點。它有 1 個隱藏層,包含 10 個單元。你可以看到該模型結構的摘要輸出。你將建立一個相似的網路,但有 3 個隱藏層(每層仍維持 10 個單元)。
再次提醒,訓練兩個模型會花一點時間,所以在你執行程式碼後,需要等幾秒才會看到結果。
本練習屬於課程
Python 深度學習入門
練習說明
- 建立一個名為
model_2的模型,其結構類似model_1,但將隱藏層改為 3 層、每層 10 個單元,而不是只有 1 層。- 在第一個隱藏層使用
input_shape指定輸入形狀。 - 3 個隱藏層使用
'relu'啟用函式,輸出層使用'softmax',且輸出層應有 2 個單元。
- 在第一個隱藏層使用
- 以與先前模型相同的方式編譯
model_2:optimizer使用'adam',loss使用'categorical_crossentropy',並設定metrics=['accuracy']。 - 按下「Submit Answer」來訓練兩個模型並視覺化哪一個效果較佳!
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# The input shape to use in the first hidden layer
input_shape = (n_cols,)
# Create the new model: model_2
model_2 = ____
# Add the first, second, and third hidden layers
____
____
____
# Add the output layer
____
# Compile model_2
____
# Fit model 1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.4, verbose=False)
# Fit model 2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.4, verbose=False)
# Create the plot
plt.plot(model_1_training.history['val_loss'], 'r', model_2_training.history['val_loss'], 'b')
plt.xlabel('Epochs')
plt.ylabel('Validation score')
plt.show()