嘗試更寬的網路
現在你已經具備動手嘗試不同模型所需的一切!
名為 model_1 的模型已經預先載入。你可以在 IPython Shell 中看到此模型的摘要。這是一個相對小的網路,每個隱藏層只有 10 個單元。
在這個練習中,你將建立一個名為 model_2 的新模型,它與 model_1 類似,但每個隱藏層有 100 個單元。
當你建立 model_2 之後,兩個模型都會被擬合,並顯示一張圖,呈現每個 epoch 的損失分數。我們在擬合指令中加入了 verbose=False 參數,以減少列印更新,因為你會用圖形而非文字來查看結果。
由於要同時擬合兩個模型,按下執行後需要等一下才會看到輸出,請耐心等候。
本練習屬於課程
Python 深度學習入門
練習說明
- 建立
model_2,使其與model_1相同,但將你用'relu'活化函式加入的前兩個Dense層節點數由10改為100。輸出層使用Dense且節點數為2,activation設為'softmax'。 - 如同先前的模型一樣編譯
model_2:optimizer用'adam',loss用'categorical_crossentropy',metrics=['accuracy']。 - 按下「Submit Answer」以擬合兩個模型並視覺化哪一個表現較好!注意
model.fit()中的關鍵字引數verbose=False:這會減少列印的更新,因為你將以圖形方式而非文字來評估模型。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Define early_stopping_monitor
early_stopping_monitor = EarlyStopping(patience=2)
# Create the new model: model_2
model_2 = ____
# Add the first and second layers
____.____(____(____, ____=____, input_shape=input_shape))
____
# Add the output layer
____
# Compile model_2
____
# Fit model_1
model_1_training = model_1.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], verbose=False)
# Fit model_2
model_2_training = model_2.fit(predictors, target, epochs=15, validation_split=0.2, callbacks=[early_stopping_monitor], 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()