2016-04-14 2 views
4

Ранняя остановка включена по умолчанию для h2o.deeplearning(). Но, из R, как мне узнать, действительно ли это было раньше, и сколько эпох он сделал? Я попытался это:Как узнать, сколько глубоких учебных эпох было сделано, от R?

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

, который говорит мне информацию о слоях, MSE, R2 и т.д., но ничего о том, сколько эпох запускались.

Over on Flow Я вижу информацию (например, где ось X останавливается в таблице «История подсчета очков - отклонение» или в таблице «История подсчета»).

ответ

3

Если ваша модель называется m, а затем, чтобы получить только число эпох обученных: last([email protected]$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 

I.e. Вы можете увидеть общее количество эпох, посмотрев последнюю строку.

BTW, это отличается от команды h2o summary() при применении к данным frame; в этом случае он ведет себя как встроенная сводная функция R и показывает статистику по каждому столбцу в фрейме данных.

2

Я вполне уверен в том, что ответ Даррена Кука действителен только тогда, когда 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% эпох, чтобы достичь того же результата от запуска до запуска. –

Смежные вопросы