尝试更宽的网络
现在您已经掌握了开始尝试不同模型所需的一切!
一个名为 model_1 的模型已预先加载。您可以在 IPython Shell 中看到它的摘要输出。这是一个相对较小的网络,每个隐藏层只有 10 个单元。
在本练习中,您将创建一个名为 model_2 的新模型。它与 model_1 类似,但每个隐藏层有 100 个单元。
创建 model_2 之后,将对两个模型进行拟合,并显示一个图表,展示每个 epoch 上两者的损失曲线。我们在拟合命令中加入了参数 verbose=False,以减少文本更新,因为您将通过图形而不是文本来查看结果。
由于要拟合两个模型,点击运行后显示输出需要一点时间,请耐心等待。
本练习是课程的一部分
Python 深度学习入门
练习说明
- 创建
model_2,使其结构与model_1相同,但将前两个使用'relu'激活函数的Dense层的节点数从10改为100。输出层使用2个节点的Dense层,并将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()