文化传媒网站建设,如何实现输入域名访问网站首页,网站建设价格标准案例,淘宝怎么设置关键词搜索cifar10数据集的众多demo中#xff0c;在数据加载环节#xff0c;transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)这条指令是经常看到的。这是一个 PyTorch 中用于图像数据标准化的函数调用#xff0c;它将图像的每个通道的值进行标准化处理… cifar10数据集的众多demo中在数据加载环节transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)这条指令是经常看到的。这是一个 PyTorch 中用于图像数据标准化的函数调用它将图像的每个通道的值进行标准化处理使得数据的均值变为 (0.4914, 0.4822, 0.4465)标准差变为 (0.2023, 0.1994, 0.2010)。 关于均值、均方差以及标准化函数transforms.Normalize()的文章太多了这里记录一下计算过程。 对于 CIFAR-10 数据集均值和标准差的计算方法如下 1、收集数据集: 首先你需要加载整个 CIFAR-10 数据集。CIFAR-10 数据集包含 60,000 张 32x32 的彩色图像分为 10 个类别。 2、计算每个通道的均值: 对于每个图像将 RGB 三个通道的值提取出来。然后对所有图像的每个通道的像素值求和然后除以总像素数图像数量乘以每个图像的像素数。 3、计算每个通道的标准差: 对于每个图像计算每个通道的像素值与该通道均值的差的平方。再对所有图像的每个通道的平方差求和然后除以总像素数最后取平方根。
import torch
from torchvision import datasets, transforms# 定义数据预处理
transform transforms.Compose([transforms.ToTensor()
])# 加载CIFAR-10数据集
train_dataset datasets.CIFAR10(root./data, trainTrue, downloadFalse, transformtransform)# 将数据集转换为Tensor
train_loader torch.utils.data.DataLoader(train_dataset, batch_size1, shuffleFalse)# 初始化均值和标准差
mean torch.zeros(3)
std torch.zeros(3)# 计算均值和标准差
for images, _ in train_loader:for i in range(3): # 遍历RGB三个通道mean[i] images[:, i, :, :].mean() # 计算每个通道的均值std[i] images[:, i, :, :].std() # 计算每个通道的标准差# 对三个通道的均值和标准差求平均
mean / 3
std / 3# 计算平均值
mean / len(train_loader)
std / len(train_loader)print(f均值: {mean}) # 均值: tensor([0.4914, 0.4822, 0.4465])
print(f标准差: {std}) # 标准差: tensor([0.2023, 0.1994, 0.2010])上述代码稍加改造就可用于自定义数据集的计算
import torch
from torchvision import transforms
from torch.utils.data import Dataset, DataLoader
from PIL import Image
import os# 自定义数据集类
class CustomDataset(Dataset):def __init__(self, img_dir, transformNone):self.img_dir img_dir # 图片文件夹的路径self.transform transform # 数据预处理self.img_files os.listdir(img_dir) # 图片文件列表def __len__(self): # 获取数据集大小return len(self.img_files)def __getitem__(self, idx): # 获取图片数据img_path os.path.join(self.img_dir, self.img_files[idx])image Image.open(img_path).convert(RGB)if self.transform:image self.transform(image)return image# 定义数据预处理
transform transforms.Compose([transforms.ToTensor()
])# 创建自定义数据集实例
custom_dataset CustomDataset(img_dir自定义数据集的文件夹路径, transformtransform)# 创建数据加载器
custom_loader DataLoader(custom_dataset, batch_size1, shuffleFalse)# 初始化均值和标准差
mean torch.zeros(3)
std torch.zeros(3)# 计算均值和标准差
for images in custom_loader:for i in range(3): # 遍历RGB三个通道mean[i] images[:, i, :, :].mean() # 计算每个通道的均值std[i] images[:, i, :, :].std() # 计算每个填充的标准差# 计算平均值
mean / len(custom_loader)
std / len(custom_loader)print(f均值: {mean})
print(f标准差: {std})