Как они знают среднее и стандартное значение, входное значение преобразований. Нормализовать
Вопрос касается учебника по загрузке данных с сайта PyTorch. Я не знаю, как они пишут значение mean_pix
а также std_pix
Нормализовать без расчета
Я не могу найти какое-либо объяснение, относящееся к этому вопросу в Stackru.
import torch
from torchvision import transforms, datasets
data_transform = transforms.Compose([
transforms.RandomSizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize(mean=[0.485, 0.456, 0.406],
std=[0.229, 0.224, 0.225])
])
hymenoptera_dataset = datasets.ImageFolder(root='hymenoptera_data/train',
transform=data_transform)
dataset_loader = torch.utils.data.DataLoader(hymenoptera_dataset,
batch_size=4, shuffle=True,
num_workers=4)
Значение mean=[0.485,0.456, 0.406]
а также std=[0.229, 0.224, 0.225]
не очевидно для меня. Как они их получают? И почему они равны этим?
1 ответ
Для нормализации input[channel] = (input[channel] - mean[channel]) / std[channel]
среднее значение и значения стандартного отклонения должны быть взяты из набора данных обучения.
Здесь среднее значение =[0,485, 0,456, 0,406], стандартное отклонение =[0,229, 0,224, 0,225] - среднее значение и стандартное значение набора данных Imagenet.
В Imagenet мы выполнили передачу набора данных и рассчитали среднее значение для каждого канала / стандартное отклонение. проверьте здесь
Предварительно обученные модели доступны в torchvision
для обучения переноса были предварительно обучены на Imagenet, поэтому использование его среднего и стандартного отклонения было бы хорошо для тонкой настройки вашей модели.
Если вы пытаетесь обучить свою модель с нуля, было бы лучше использовать среднее и стандартное отклонение вашего обучающего набора данных (в данном случае это набор данных лица). Кроме этого, в большинстве случаев для вашей проблемы достаточно среднего и стандартного Imagenet.