我们需要更多数据吗?
现在来检查一下,您构建的 digits 数据集 的 model 是否会从更多训练样本中受益!
为尽量简化代码,以下内容已初始化并可直接使用:
- 您刚构建的
model。 X_train、y_train、X_test和y_test。- 使用
model.get_weights()保存下来的模型初始权重:initial_weights。 - 预定义的训练规模列表:
training_sizes。 - 基于损失监控的预定义早停回调:
early_stop。 - 两个用于存储评估结果的空列表:
train_accs和test_accs。
请在不同的训练规模上训练您的模型,并在 X_test 上评估结果。
最后使用 plot_results() 绘制结果图。
本练习的完整代码可在幻灯片中查看!
本练习是课程的一部分
Keras 深度学习入门
练习说明
- 按循环中当前评估的
size获取相应比例的训练数据。 - 使用
set_weights()将模型权重重置为initial_weights,并在该比例的训练数据上训练模型,回调使用early_stop。 - 评估并分别存储该训练子集与测试集的准确率。
- 调用
plot_results(),传入每个训练规模对应的训练集与测试集准确率。
交互式实操练习
通过完成这段示例代码来试试这个练习。
for size in training_sizes:
# Get a fraction of training data (we only care about the training data)
X_train_frac, y_train_frac = X_train[:size], y_train[:size]
# Reset the model to the initial weights and train it on the new training data fraction
model.set_weights(____)
model.fit(X_train_frac, y_train_frac, epochs = 50, callbacks = [early_stop])
# Evaluate and store both: the training data fraction and the complete test set results
train_accs.append(model.evaluate(____, ____)[1])
test_accs.append(model.evaluate(____, ____)[1])
# Plot train vs test accuracies
plot_results(____, ____)