Газированная вода H2O - параметр DNN mini_batch_size - PullRequest
0 голосов
/ 27 сентября 2018

Я сейчас использую Spark 2.3.0 с sparkling-water 2.3.1.Я нашел документацию базовой библиотеки H2O, просмотрев changelog , который ссылается на this .Очевидно, он использует H2O 3.18.

. Посмотрев на DNN, я заметил отсутствие параметра batch_size, но вместо этого он предлагает параметр mini_batch_size, который фактически не задокументирован.Единственная документация по этому параметру, которую я нашел, это здесь , что относится к H2O 2.4, и я предположил, что она все еще применима к используемой версии (я не знаю, верно ли это предположение).

мини-пакет

Количество строк обучающих данных, обрабатываемых за одну итерацию.Обратите внимание, что независимо от этого параметра, каждая строка используется немедленно для обновления модели с (онлайн) стохастическим градиентным спуском.Размер мини-пакета контролирует период синхронизации между узлами в распределенной среде и частоту, с которой может происходить оценка и отмена модели.Например, если для мини-пакета установлено значение 10 000 для H2O, работающего на 4 узлах, то каждый узел будет обрабатывать 2500 строк за итерацию, выборочно выбирая их локальные данные.Затем происходит усреднение модели между узлами, и может происходить оценка (в зависимости от интервала оценки и коэффициента заполнения).Специальные значения: 0 для одной эпохи на итерацию и -1 для обработки максимального количества данных на итерацию.Если «реплицировать обучающие данные» включено, N эпох будет обучаться за итерацию на N узлах, в противном случае одна эпоха.

Исходя из этого, я интерпретирую, что размер пакета фактически равен 1, поскольку он всегда выполняетOnline Gradient Descent.

Я также начал копаться в исходном коде H2O, чтобы посмотреть, каково его значение по умолчанию, и AFAIU параметры по умолчанию содержатся в этот класс .

Из строки 1694 :

// stochastic gradient descent: mini-batch size = 1
// batch gradient descent: mini-batch size = # training rows
public int _mini_batch_size = 1;

Итак, из комментария кажется, что на самом деле он не выполняет Online Gradient Descent, но, похоже, фактически ведет себя как пакетразмер.И значение 1 не имеет смысла, если мы предполагаем, что документация H2O 2.4 все еще применяется.

Кроме того, из строка 2173 , где она устанавливает пользовательские параметры:

if (fromParms._mini_batch_size > 1) {
    Log.warn("_mini_batch_size", "Only mini-batch size = 1 is supported right now.");
    toParms._mini_batch_size = 1;

На самом деле у меня была быстрая блокировка исходного кода, и я мог что-то упустить, но я действительно не могу понять, как работает параметр mini_batch_size и как он соотносится с размером пакета.Может кто-нибудь пролить свет на это?

1 Ответ

0 голосов
/ 05 октября 2018

Этот параметр на самом деле не должен использоваться пользователем, и есть запрос, чтобы скрыть его здесь .На данный момент, пожалуйста, оставьте mini_batch_size как 1 (значение по умолчанию), чтобы не отображать никаких предупреждений или ошибок.

...