在默认情况下,h2o.deeplearning()会打开早期停止。但是,从R中,我如何找出它是否早停,以及它有多少个时代?我试过这个:
model = h2o.deeplearning(...) print(model)
它告诉我有关层、MSE、R2等方面的信息,但是没有任何关于运行多少个时代的信息。
在流程上,我可以看到信息(例如,x轴在“记分历史-偏离”图表中停止的位置,或者在得分历史表中的位置)。
发布于 2016-04-15 14:31:47
如果您的模型名为m,那么只需要得到训练过的时代数:last(m@model$scoring_history$epochs)
要查看可用的其他信息(这实际上是您在流接口中可以看到的所有信息)以及如何访问它,请使用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也就是说,通过查看最后一行,你可以看到总划期数。
顺便说一句,当应用于数据帧时,这与H2O的summary()命令不同;在这种情况下,它的行为类似于R的内置摘要函数,并显示数据帧中每列的统计信息。
发布于 2016-08-29 15:27:45
我很有信心地说,达伦·库克的回答只有在overwrite_with_best_model=FALSE的时候才有效。无论如何,默认情况下,此参数设置为TRUE,因此,由于可以部分找到here的原因,前面的答案可能会引起很大的误解。您可以在下面的输出中检查我的意思,使用h2o.grid对网络进行调优,并按照达伦的建议使用m@model$scoring_history。
epochs validation_classification_error
0.00000 0.46562
1.43150 0.50000
100.31780 0.46562如您所见,如果overwrite_with_best_model=TRUE比函数在上一次迭代中保存了最好的模型,那么达伦的解总是对应于最大的历元数。假设您正在优化您的模型,我推荐以下解决方案:
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))https://stackoverflow.com/questions/36620585
复制相似问题