2016-04-14 65 views
4

對於h2o.deeplearning(),提前停止默認打開。但是,從R開始,我怎麼知道它是否提早停止,以及它做了多少個時代?我已經試過這樣:如何知道R有多少深度學習時期?

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

告訴我上層的信息,該MSE,R2等,但沒有什麼,有多少被時代運行。

Over on Flow我可以看到信息(例如X軸停在「Scoring History - Deviance」圖表或Scoring History表格中)。

回答

3

如果你的模式被稱爲m,然後讓受過訓練的時代的只是數量:last([email protected]$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 

I.e.通過查看最後一行,您可以看到新紀元的總數。

順便提一句,這與h2o的summary()命令適用於數據時不同框架;在這種情況下,它的行爲與R的內置彙總函數相似,並顯示數據框中每列的統計信息。

2

我很自信地說,達倫庫克的答案只有在overwrite_with_best_model=FALSE時纔有效。無論如何,默認情況下此參數設置爲TRUE,因此以前的答案可能相當具有誤導性,原因是您可以部分找到here。你可以在下面的輸出中查看我的意思,如Darren所建議的,使用h2o.grid[email protected]$scoring_history調整網絡。

epochs  validation_classification_error 
0.00000 0.46562 
1.43150 0.50000 
100.31780 0.46562 

正如你所看到的,如果overwrite_with_best_model=TRUE比功能保存在最後一次迭代的最佳模式,從而達倫的解決方案總是對應於時代的最大數量。假設你調整你的模型,我建議如下解決方案:

epochsList = [email protected]$scoring_history$epochs 
bestEpochIndex = which.min([email protected]$scoring_history$validation_classification_error) 
bestEpoch = epochsList[bestEpochIndex] 
print(sprintf("The best epoch is: %d", bestEpoch)) 
+0

好一點 - 無論是我的問題點和我的回答是想知道有多少紀元前被提早終止停止完成它。我發現你的統計數據 - 達到某個指標最小值的時期數 - 也很有趣。儘管如此,所有這些都應該謹慎使用:您可以輕鬆地改變+/- 50%的時期,以便從跑步到跑步達到相同的結果。 –