gpt4 book ai didi

python-3.x - 在 pytorch 中学习之前对图像进行标准化

转载 作者:行者123 更新时间:2023-11-30 08:48:34 25 4
gpt4 key购买 nike

在学习 pytorch 之前,我想应用转换来标准化数据集中的图像。我听说这可以极大地提高学习效果。我认为 Pytorch 默认情况下会将所有图像像素值除以 255,然后再将它们放入张量中,这是否会给标准化带来问题?在线指南建议我们按以下方式进行。

transform = transforms.Compose(
[transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))])

但是,这里的 0.5 只是我发现的一个示例,它不是我的数据通道的均值或方差。

所以我的问题是平均值和标准差是如何得出的?我们是否需要展平并附加输入图片的所有绿色像素值,然后计算平均值和标准差?然后对所有其他颜色重复此操作。是这样的吗?

我听说还有另一种方法试图计算“平均图片”以进行标准化。结果有什么不同?

最佳答案

运行此代码可获取平均值、标准差、自由度 delta = 1 的标准差的值。

transform = transforms.Compose([
transforms.ToPILImage(),
transforms.ToTensor()
])

dataloader = torch.utils.data.DataLoader(*torch_dataset*, batch_size=4096, shuffle=False, num_workers=4)

data_mean = [] # Mean of the dataset
data_std0 = [] # std of dataset
data_std1 = [] # std with ddof = 1
for i, data in enumerate(dataloader, 0):
# shape (batch_size, 3, height, width)
numpy_image = data['image'].numpy()

# shape (3,)
batch_mean = np.mean(numpy_image, axis=(0,2,3))
batch_std0 = np.std(numpy_image, axis=(0,2,3))
batch_std1 = np.std(numpy_image, axis=(0,2,3), ddof=1)

data_mean.append(batch_mean)
data_std0.append(batch_std0)
data_std1.append(batch_std1)

# shape (num_iterations, 3) -> (mean across 0th axis) -> shape (3,)
data_mean = np.array(data_mean).mean(axis=0)
data_std0 = np.array(data_std0).mean(axis=0)
data_std1 = np.array(data_std1).mean(axis=0)

关于python-3.x - 在 pytorch 中学习之前对图像进行标准化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com