【pytorch】pytorch入门2:pytorch内置的小工具

基于B站小土堆网课内容


一、tensorboard:张量输出板

用于展示数据集,观察训练的情况和输出
本质上是用浏览器打开本地的log文件

  • 打开方式:

bash:
("??? ??? ??? ??? ??? ??? ? "处填写log的路径)

tensorboard --logdir="?????????????????????????" --port=6007'

或者 py

writer = SummaryWriter("logs")
os.system('tensorboard --logdir=logs --port=6007')

在这里插入图片描述

二、transform:自定义工具箱

1、作用

用于创建一个自己的工具箱,处理输入
object -> PIL Image;

  • 需要tensor数据类型的原因:支持更方便的数据表示和处理方法,集成性更高

在这里插入图片描述

2、常见的transforms:

  • PIL: image.open()
  • tensor: ToTensor()
  • narrays: cv2.imread()

3、normalize 标准化

公式:

input[channel] = (input[channel] - mean[channel] / std[channel] )

这行代码是图像处理或数据预处理中的一个常见步骤,用于对数据进行标准化(或归一化)处理。具体来说,它是针对图像的每个颜色通道(比如RGB图像中的红色、绿色、蓝色通道)进行操作的。这里的input[channel]表示输入数据的第channel个通道,mean[channel]std[channel]分别表示该通道数据的平均值和标准差。

整个表达式的意思是:将输入数据的第channel个通道的每个像素值减去该通道的平均值,然后除以该通道的标准差。这样做的目的是将数据标准化,使得处理后的数据具有相同的尺度,便于后续处理或模型训练。

标准化后的数据通常具有0均值和1标准差,有助于加快模型的收敛速度,提高模型的训练效率。此外,标准化还可以减少模型过拟合的风险,因为它使得数据分布更加稳定。

  • 结果:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

4、resize 压缩

  • 改为500 × 500
    在这里插入图片描述

5 随机裁剪

在这里插入图片描述

三、torchvision,dataloder:数据集下载和索引

在这里插入图片描述

test_loader = DataLoader(dataset=test_data,
                         batch_size=64,
                         shuffle=True,  # shuffle的意思是打乱
                         num_workers=0,
                         drop_last=True)

tensorboard显示dataloader结果(每次load的图片):
在这里插入图片描述


总结

在这里插入图片描述

  • 完整代码
# --------------- basic info --------------- *
# auther:
# time & date: 2024-07-15, 17:22
# project: 
import os


# start import --- *
import math
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
# end import ----- *

writer = SummaryWriter("logs")
img = Image.open(r'D:\Libraries\projects\python\001 learningTest and small task\a005_pytorch\dataset_002_练手数据集\imgs\airplane.png')
print(img)

# to tensor
trans_totensor = transforms.ToTensor()
img_tensor = trans_totensor(img)
writer.add_image('ToTensor', img_tensor)

# normalize
print(img_tensor[0][0][0])

# create a normalize transform toolbox
trans_norm = transforms.Normalize([3, -4, 7], [-8, -0.02, 17])

# use the toolbox
img_tensor_norm = trans_norm(img_tensor)
# print(img_tensor_norm)
print(img_tensor_norm[0][0][0])
writer.add_image('normalized', img_tensor_norm, 5)
writer.add_image('before normalized', img_tensor)

# resize
print(img.resize)
trans_resize = transforms.Resize((512, 512))  # create tool
# pil -> resize -> PIL -> ToTensor -> Tensor
img_resize = trans_resize(img)
img_resize = trans_totensor(img_resize)
writer.add_image('resize', img_resize, 0)

# compose
trans_resize_2 = transforms.Resize(512)
trans_compose = transforms.Compose([trans_resize_2, trans_totensor])  # create tool
img_resize_2 = trans_compose(img)
writer.add_image('compose', img_resize_2, 0)

# open tensorboard
# os.system('tensorboard --logdir=logs --port=6006')
# tensorboard --logdir="D:\Libraries\projects\python\001 learningTest and small task\a005_pytorch\a002_lesson_src\logs" --port=6006

writer.close()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值