他们怎么知道mean和std,transforms.Normalize的输入值
How do they know mean and std, the input value of transforms.Normalize
问题是来自 PyTorch 网站的 the data loading tutorial。我不知道他们如何在没有计算的情况下写transforms.Normalize的mean_pix
和std_pix
的值
我在 Whosebug 上找不到与此问题相关的任何解释。
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]
对我来说不是很明显。他们如何得到它们?为什么它们等于这些?
为了归一化 input[channel] = (input[channel] - mean[channel]) / std[channel]
,均值和标准差值取自 训练 数据集。
这里,mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]是Imagenet数据集的mean和std。
On Imagenet, we’ve done a pass on the dataset and calculated per-channel mean/std. check here
torchvision
中用于迁移学习的预训练模型已在 Imagenet 上进行了预训练,因此使用其均值和标准差可以很好地微调您的模型。
如果您尝试从头开始训练模型,最好使用训练数据集(在本例中为人脸数据集)的均值和标准差。除此之外,在大多数情况下,Imagenet 的平均值和标准差 suffice 可以解决您的问题。
问题是来自 PyTorch 网站的 the data loading tutorial。我不知道他们如何在没有计算的情况下写transforms.Normalize的mean_pix
和std_pix
的值
我在 Whosebug 上找不到与此问题相关的任何解释。
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]
对我来说不是很明显。他们如何得到它们?为什么它们等于这些?
为了归一化 input[channel] = (input[channel] - mean[channel]) / std[channel]
,均值和标准差值取自 训练 数据集。
这里,mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]是Imagenet数据集的mean和std。
On Imagenet, we’ve done a pass on the dataset and calculated per-channel mean/std. check here
torchvision
中用于迁移学习的预训练模型已在 Imagenet 上进行了预训练,因此使用其均值和标准差可以很好地微调您的模型。
如果您尝试从头开始训练模型,最好使用训练数据集(在本例中为人脸数据集)的均值和标准差。除此之外,在大多数情况下,Imagenet 的平均值和标准差 suffice 可以解决您的问题。