【发布时间】:2018-03-13 05:56:41
【问题描述】:
我是一名计算机科学教师,目前正在开设一门深度学习入门课程。 Python 和 Keras 框架是我选择的工具。
我想通过在一些预定义的 2D 数据上训练一个越来越复杂的模型来向我的学生展示什么是过度拟合,就像 this example 的末尾那样。
同样的想法出现在 Andrew Ng 的course on neural networks tuning 的编程活动中。
但是,无论我多么努力,我都无法用 Keras 复制这种行为。使用相同的数据集和超参数,决策边界总是“更平滑”,模型永远不会拟合数据集中的噪声点。请参阅下面的结果和click here 以浏览相关代码。以下是相关摘录:
# Varying the hidden layer size to observe underfitting and overfitting
plt.figure(figsize=(16, 32))
hidden_layer_dimensions = [1, 2, 3, 4, 5, 20, 50]
for i, hidden_layer_size in enumerate(hidden_layer_dimensions):
fig = plt.subplot(4, 2, i+1)
plt.title('Hidden Layer size: {:d}'.format(hidden_layer_size))
model = Sequential()
model.add(Dense(hidden_layer_size, activation='tanh', input_shape=(2,)))
model.add(Dense(1, activation='sigmoid'))
model.compile(SGD(lr=1.0), 'binary_crossentropy', metrics=['accuracy'])
history = model.fit(data, targets, verbose=0, epochs=50)
plot_decision_boundary(lambda x: model.predict(x) > 0.5, data, targets, fig)
我做错了吗? Keras 中是否有一些内部优化机制起作用?我可以通过其他编译选择来缓解它们吗?
【问题讨论】:
-
请添加您的代码,该链接将来可能无法使用,因此您的问题将变得无用
标签: python machine-learning neural-network keras