怎么知道从R做了多少深度学习时代?

时间:2016-04-14 10:36:58

标签: r h2o

h2o.deeplearning()默认启用提前停止功能。但是,从R,我怎么知道它是否确实提前停止了,它做了多少个时代?我试过这个:

model = h2o.deeplearning(...) print(model)

告诉我关于图层,MSE,R2等的信息,但没有关于运行了多少个纪元的信息。

Over on Flow我可以看到信息(例如x轴在“评分历史 - 偏差”图表或“评分历史记录”表中停止的位置)。

2 个答案:

答案 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))