h2o.deeplearning()
默认启用提前停止功能。但是,从R,我怎么知道它是否确实提前停止了,它做了多少个时代?我试过这个:
model = h2o.deeplearning(...)
print(model)
告诉我关于图层,MSE,R2等的信息,但没有关于运行了多少个纪元的信息。
Over on Flow我可以看到信息(例如x轴在“评分历史 - 偏差”图表或“评分历史记录”表中停止的位置)。
答案 0 :(得分:3)
如果您的模型被称为m
,那么只需获得受过训练的时期数量:last(m@model$scoring_history$epochs)
要查看可用的其他信息(您可以在Flow界面中看到的所有内容)以及如何访问它,请使用str(m)
另请注意以下命令:summary(m)
除print(m)
所示内容外,还添加了此部分(针对深度学习模式):
Scoring History:
timestamp duration training_speed epochs iterations samples training_MSE training_deviance training_r2
1 2016-04-14 11:35:46 0.000 sec 0.00000 0 0.000000
2 2016-04-14 11:35:52 5.218 sec 15139 rows/sec 10.00000 1 77150.000000 0.00000 0.00000 0.07884
...
7 2016-04-14 11:36:18 31.346 sec 25056 rows/sec 100.00000 10 771500.000000 0.00000 0.00000 0.72245
即。您可以通过查看最后一行来查看时期总数。
BTW,这与h2o的summary()
命令在应用于数据 frame 时不同;在这种情况下,它的行为类似于R的内置汇总函数,并显示数据框中每列的统计信息。
答案 1 :(得分:2)
我非常有信心说达伦库克的答案只有在overwrite_with_best_model=FALSE
时才有效。无论如何,默认情况下,此参数设置为TRUE
,因此您可以部分找到here的原因,之前的答案可能会产生误导。您可以在以下输出中查看我的意思,该输出使用h2o.grid
调整网络并使用m@model$scoring_history
作为Darren建议。
epochs validation_classification_error
0.00000 0.46562
1.43150 0.50000
100.31780 0.46562
如您所见,如果overwrite_with_best_model=TRUE
比函数在最后一次迭代中保存最佳模型,那么Darren的解决方案总是对应于最大的历元数。假设您正在调整模型,我建议使用以下解决方案:
epochsList = m@model$scoring_history$epochs
bestEpochIndex = which.min(m@model$scoring_history$validation_classification_error)
bestEpoch = epochsList[bestEpochIndex]
print(sprintf("The best epoch is: %d", bestEpoch))