当前位置: 首页 > news >正文

transforms的使用 小土堆pytorch记录

关键知识点总结

1. TensorBoard可视化
  • 作用:实时可视化训练过程、模型结构和数据

  • 核心组件

    • SummaryWriter:创建日志写入器

    • add_image():记录图像数据

    • add_scalar():记录标量数据(如损失函数)

  • 使用流程

writer = SummaryWriter("logs")  # 创建写入器
writer.add_image("tag", tensor, step)  # 记录数据
writer.close()  # 关闭资源
  • 查看日志:终端执行 tensorboard --logdir=logs

2. 图像预处理(transforms)
变换类型作用重要参数输入/输出类型
ToTensorPIL图像 → Tensor格式PIL → Tensor[C,H,W]
Normalize标准化(均值&标准差)(mean), (std)Tensor → Tensor
Resize调整图像尺寸(h,w) 或 int(短边尺寸)PIL → PIL
RandomCrop随机裁剪(数据增强)(size)PIL → PIL
Compose组合多个变换[transform1, ...]链式执行
3. 标准化(Normalize)原理
# 计算公式
normalized = (input - mean) / std# 示例计算(单通道):
原始值 = 0.8
mean = 0.5, std = 0.5
结果 = (0.8 - 0.5)/0.5 = 0.6
4. 维度顺序变化
  • PIL图像:(Width, Height, Channels)

  • Tensor图像:(Channels, Height, Width)

  • 转换时机ToTensor自动完成维度转换

视频代码

from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms# 创建TensorBoard写入器,日志保存在logs目录
writer = SummaryWriter("logs")# 打开图像并转换为RGB格式(确保三通道)
img = Image.open("img/redraw.png").convert("RGB")
print(img)  # 打印原始图像信息(尺寸/格式)# 1. ToTensor转换(核心知识点)
trans_totensor = transforms.ToTensor()  # 创建转换器
img_tensor = trans_totensor(img)  # PIL图像 -> Tensor[0,1]
writer.add_image("ToTensor", img_tensor)  # 写入TensorBoard# 2. Normalize标准化(核心知识点)
print("原始值:", img_tensor[0][0][0])  # 查看原始像素值
trans_norm = transforms.Normalize([0.5, 0.5, 0.5],  # RGB三通道均值[0.5, 0.5, 0.5]   # RGB三通道标准差
)
img_norm = trans_norm(img_tensor)  # 应用标准化:(input-mean)/std
print("归一化后:", img_norm[0][0][0])  # 查看标准化后的值
writer.add_image("Normalize", img_norm, 2)  # 写入TensorBoard(step=2)# 3. Resize调整尺寸
print("原始尺寸:", img.size)  # PIL格式尺寸 (width, height)
trans_resize = transforms.Resize((512, 512))  # 目标尺寸 (height, width)
img_resize = trans_resize(img)  # 调整尺寸(返回PIL图像)
img_resize_tensor = trans_totensor(img_resize)  # 再次转换为Tensor
writer.add_image("Resize", img_resize_tensor, 0)  # 写入TensorBoard# 4. Compose组合变换(核心知识点)
trans_resize_2 = transforms.Resize(512)  # 单参数:调整短边为512
trans_compose = transforms.Compose([trans_resize_2,  # 第一步:调整尺寸trans_totensor   # 第二步:转Tensor
])
img_compose = trans_compose(img)  # 自动顺序执行
writer.add_image("Resize_Compose", img_compose, 1)  # 写入TensorBoard# 5. RandomCrop随机裁剪(数据增强)
trans_random = transforms.RandomCrop(512)  # 随机裁剪为512x512
trans_compose_2 = transforms.Compose([trans_random,    # 随机裁剪trans_totensor   # 转Tensor
])
for i in range(10):  # 生成10个随机裁剪样本img_crop = trans_compose_2(img)writer.add_image("RandomCrop", img_crop, i)  # 每个样本单独记录writer.close()  # 关闭写入器

知识拓展

1. 常用transforms扩展
# 颜色空间变换
transforms.Grayscale()      # 转灰度图
transforms.ColorJitter()    # 随机调整亮度/对比度# 几何变换
transforms.RandomRotation(30)   # 随机旋转(-30°~30°)
transforms.RandomHorizontalFlip(p=0.5)  # 50%概率水平翻转# 组合示例(典型数据增强)
train_transform = transforms.Compose([transforms.RandomResizedCrop(224),transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize([0.485,0.456,0.406], [0.229,0.224,0.225])
])

调试技巧

# 检查中间结果
print(type(img))          # 查看当前数据类型
print(img.shape)          # 查看Tensor维度
img.show()                # 显示PIL图像

transforms是构建数据预处理流水线的核心工具,掌握它们能大幅提升数据准备效率。TensorBoard则是模型训练过程的"望远镜",帮助我们直观理解训练动态。

http://www.dtcms.com/a/329409.html

相关文章:

  • 深度学习流体力学:基于PyTorch的物理信息神经网络(PINN)完整实现
  • PyTorch Tensor完全指南:深度学习数据操作的核心艺术
  • C++编程学习(第21天)
  • LeetCode 分类刷题:1004. 最大连续1的个数 III
  • 【Linux】常用命令(三)
  • 智慧养老丨实用科普+避坑指南:科技如何让晚年生活更安全舒适?
  • 编译 C++ 程序时提示:fatal error: ‘json/json.h‘ file not found
  • 使用 HTML5 Canvas 打造炫酷的数字时钟动画
  • Linux基本操作命令
  • Go 语言函数详解:从基础到高阶的行为逻辑构建
  • 基于SD-WAN的医疗工厂弱电智能化机房方案:架构设计与实践
  • 具有熔断能力和活性探测的服务负载均衡解决方案
  • Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
  • 【车联网kafka】Kafka核心架构与实战经验(第四篇)
  • docker镜像状态监控
  • 磁悬浮轴承转子设计避坑指南:深度解析核心要点与高可靠性策略
  • 【网络运维】Playbook进阶: 管理变量
  • 如何在 Spring Boot 中设计和返回树形结构的组织和部门信息
  • [AI React Web] E2B沙箱 | WebGPU | 组件树 | 智能重构 | 架构异味检测
  • [AI React Web] 包与依赖管理 | `axios`库 | `framer-motion`库
  • Matlab(4)
  • STM32H5 的 PB14 引脚被意外拉低的问题解析
  • STM32读内部FLASH,偶尔读取错误
  • 三、非线性规划
  • 基于C#、.net、asp.net的心理健康咨询系统设计与实现/心理辅导系统设计与实现
  • 【vue3】v-model 的 “新玩法“
  • 基于人工智能和物联网融合跌倒监控系统(LW+源码+讲解+部署)
  • 面试实战 问题二十六 JDK 1.8 核心新特性详解
  • 猫头虎AI分享:Word MCP,让AI具备Word文档操作能力,文档创建、内容添加、格式编辑等AI能力
  • 【Word VBA Zotero 引用宏错误分析与改正指南】【解决[21–23]参考文献格式插入超链接问题】