Размер партии нормализации партии и градиентного спуска - PullRequest
0 голосов
/ 18 апреля 2020

Нам нужно выбрать размер партии для GD, а также нормализацию, они оба называли размер партии, но в реальной реализации они должны быть одинаковыми? Или иначе как рамки справляются с ними?

Например, в Pytorch один размер пакета определен в загрузчике данных, например,

torch.utils.data.DataLoader(image_datasets[x],
batch_size=16,
shuffle=True,
num_workers=4)

и, если используется BN

self.bn1 = nn.BatchNorm2d(16)

Должен ли он быть одинаковым ( 16) или это может быть по другому? Если отличается, есть ли предпочтительные отношения между двумя «размер партии» Спасибо

1 Ответ

1 голос
/ 18 апреля 2020

Нет, batch_size определяется только в загрузчике данных, но не в модели.

BatchNorm2d имеет параметр num_features, и это зависит от количества каналов, а не от пакета размер, как вы можете видеть в документах .

Они совершенно не связаны.

BatchNorm2d

torch.nn.BatchNorm2d(num_features, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)

Параметры

  • num_features - C от ожидаемого ввода размера (N, C, H, W) (N, C, H, W) (N, C, H, W)

  • eps - значение, добавленное к знаменателю для численной устойчивости. По умолчанию: 1e-5

  • импульс - значение, используемое для вычисления running_mean и running_var. Может быть установлено на None для совокупного скользящего среднего (т.е. простого среднего). По умолчанию: 0,1

  • affine - логическое значение, которое при значении True этого модуля имеет доступные для изучения аффинные параметры. По умолчанию: True

  • track_running_stats - логическое значение, при котором этот модуль отслеживает текущее среднее значение и дисперсию, а при значении False этот модуль не отслеживает такую ​​статистику и всегда использует статистику партии как в режиме обучения, так и в режиме eval. По умолчанию: True

...