Zhe*_*Xin 8 pytorch dataloader
问题是关于PyTorch 网站上的数据加载教程。我不知道他们是怎么写的价值mean_pix和std_pix的在transforms.Normalize不用计算
我无法在 StackOverflow 上找到与此问题相关的任何解释。
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)
Run Code Online (Sandbox Code Playgroud)
价值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 数据集的均值和标准差。
在 Imagenet 上,我们已经完成了数据集的传递并计算了每个通道的均值/标准值。 在这里检查
可torchvision用于迁移学习的预训练模型是在Imagenet 上预训练的,因此使用其均值和标准差可以很好地微调您的模型。
如果您尝试从头开始训练模型,最好使用训练数据集(在本例中为人脸数据集)的均值和标准差。除此之外,在大多数情况下,Imagenet 的均值和标准差足以解决您的问题。
| 归档时间: |
|
| 查看次数: |
3303 次 |
| 最近记录: |