2016-04-14 5 views
4

早期停止は、デフォルトでh2o.deeplearning()に設定されています。しかし、Rから、それが早期に止まったのか、それが何回起きたのかをどうやって調べるのですか?私はこれを試してみた:私は、レイヤー上の情報を伝えますRからどのくらいの深い学習期が行われたのか、どのように知っていますか?

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

を、MSE、R2などを実行し、どのように多くのエポックについては何もなく、。

オンエアフロー(「スコアリング履歴 - 逸脱」チャートまたはスコアリング履歴テーブルでx軸が停止する場所など)を見ることができます。

答えて

3

モデルが訓練エポックの数だけ取得するには、その後、m呼び出された場合:使用可能である他のどのような情報を参照するにはlast([email protected]$scoring_history$epochs)

を(文字通りあなたはフローインターフェースで見ることができるすべてのものである)とどのようにアクセスしますそれ、またstr(m)

は、このコマンドを認識して使用します。print(m)で示されているものに加えてsummary(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

Darren Cookの回答はoverwrite_with_best_model=FALSEの場合にのみ有効であると私は確信しています。とにかく、このパラメータはデフォルトでTRUEに設定されているため、部分的にhereが見つかる可能性があるため、前の回答は誤解を招く可能性があります。あなたはダーレンが示唆したように、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%のエポックを簡単に変更することができます。 –

関連する問題