《------往期经典推荐------》
二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】,持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~
《------正文------》
引言
T.Normalize(mean=mean, std=std)
是图像预处理中常用的归一化操作,它会对输入图像的每个通道进行标准化处理。其中mean和std表示整个训练集图片的均值和标准差
。
均值与标注差取值
-
通用数据集均值和标准差:如果使用的是常见的数据集(如 ImageNet、COCO 等),通常会直接使用这些数据集的全局均值和标准差。例如:
mean = [0.485, 0.456, 0.406] std = [0.229, 0.224, 0.225]
-
自定义数据集计算:如果是自定义数据集,则可以通过编写脚本统计整个训练集的均值和标准差,用于更贴合实际分布的归一化。
示例代码片段:import numpy as np from torch.utils.data import DataLoader loader = DataLoader(dataset, batch_size=...) mean = 0. std = 0. for images, _ in loader: batch_samples = images.size(0) images = images.view(batch_samples, images.size(1), -1) mean += images.mean(2).sum(0) std += images.std(2).sum(0) mean /= len(loader.dataset) std /= len(loader.dataset)
归一化的作用
- 加快模型收敛速度:通过将输入数据缩放到一个相对统一的范围(通常是均值为0,标准差为1),可以显著提升模型的训练效率。
- 缓解梯度消失/爆炸问题:归一化有助于保持不同层激活值的稳定性,减少梯度问题。
- 增强模型泛化能力:使模型对输入数据的分布变化更加鲁棒。
好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!