持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
总计:今天是十月更文计划第十一天,第二十二篇
这篇继续上一篇的学习:
上一篇写到了medel.summary()方法来查看神经网络的参数:
这个只是搭建了一个最简单的神经网络,接下来要写损失函数。
model.compile(loss="mean_squared_error", optimizer="sgd")
这句话很简单,然后再写回调函数:
callbacks = [keras.callbacks.EarlyStopping(
patience=5, min_delta=1e-3)]
接下来就是神经网络模型的训练了:
history = model.fit(x_train_scaled, y_train,
validation_data = (x_valid_scaled, y_valid),
epochs = 20,
callbacks = callbacks)
model.fit所带的参数有很多,具体参数可以查看keras官方文档,这里说几个最关键的参数,
x_train_scaled, y_train,表明输入的需要学习的参数x,y
validation_data = (x_valid_scaled, y_valid),表示在预测过程中,作为验证集来判断预测的准确率。
详细的参数简介如下:
epochs我设置为20,详细的来查看具体的运行结果:
对于前面没有指定默认终止条件的,在验证集的损失函数相差小于0.001的时候就会自动停止epochs,
使用history.history可以自动看到每次的记录:
如果想要看误差值,那么可以使用如下方法:
pd.DataFrame(history.history['val_loss']).diff(1)
pd方法中diff(1),可以自动的算出后一行减去前一行,用这个方法来计算差值,具体的输出结果如下:
可以清晰的看到,我的epochs设置为20次,但是实际上运行的次数是可能小于epochs设置的次数的。
如果像我这样14/13:
就可以断定后两次的loss差值绝对值均少于0.0001.就会提前停止,earlystopping。
对于输出结果的绘制:
使用如下绘图语句:
def plot_learning_curves(history):
pd.DataFrame(history.history).plot(figsize=(8, 5))
plt.grid(True)
plt.gca().set_ylim(0, 1.4)
plt.show()
plot_learning_curves(history)
输出的结果如下: