Как использовать среднее и стандартное значение из обучения в 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):
Также по умолчанию во время обучения этот слой продолжает выполнять оценки своего вычисленного среднего значения и дисперсии, которые затем используются для нормализации во время оценки.
бегущими средствами - нулевые векторы ...: /?
связанные с: