Как использовать среднее и стандартное значение из обучения в Batch Norm?

Я хотел использовать средства, stds из обучения, а не пакетную статистику, поскольку кажется, что если я использую пакетную статистику, моя модель расходится (как здесь показаноКогда следует вызывать .eval() и .train () при выполнении MAML с более высокой библиотекой PyTorch ? ). Как это сделать?

Я спрашиваю, поскольку в моей модели они равны нулю, несмотря на то, что обучение еще не проводилось:

      Out[1]: BatchNorm2d(32, eps=0.001, momentum=0.95, affine=True, track_running_stats=True)
args.base_model.model.features.norm1.running_mean
Out[2]: 
tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0., 0.])

они не сохраняются в ckpt после тренировки? Их нужно было спасти?

Документы говорят, что они должны иметь ( https://pytorch.org/docs/stable/_modules/torch/nn/modules/batchnorm.html#BatchNorm2d, https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm2d.html):

Также по умолчанию во время обучения этот слой продолжает выполнять оценки своего вычисленного среднего значения и дисперсии, которые затем используются для нормализации во время оценки.

бегущими средствами - нулевые векторы ...: /?


связанные с:

0 ответов

Другие вопросы по тегам