pytorch入门8:学会transform的使用

"""
本节主要学会transform的使用
"""

from PIL import Image
from torchvision import transforms
from torch.utils.tensorboard import SummaryWriter
"""
transforms是对数据进行一系列转换的模块
比如输入一张图片->transforms工具箱(totensor/resize等等)->结果
"""
"""
transforms在python中的使用->tensor数据类型
通过transforms.ToTensor来看两个问题
1.transforms该如何使用
2.为什么要使用Tensor数据类型
"""

img_path = 'dataset/train/ants/0013035.jpg'
img = Image.open(img_path)
writer = SummaryWriter('transforms_log')

# 熟悉ToTensor方法的运用
trans_tensor = transforms.ToTensor()  # 首先定义一个ToTensor的对象
tensor_img = trans_tensor(img)
#print(tensor_img)
writer.add_image('tensor',tensor_img)
# 使用opencv
# import cv2
# cv_img = cv2.imread(img_path)

# 熟悉Normalize(归一化)的运用:(样本值-均值)/标准差
print(tensor_img[0][0][0])
trans_normalize = transforms.Normalize([0.5,0.5,0.5],[0.5,0.5,0.5])  #因为图片是三维的,所以需要输入三个均值和标准差
normalize_img = trans_normalize(tensor_img)
print(normalize_img[0][0][0])
writer.add_image('Normalize',normalize_img)

# 熟悉Resize的运用
print(img.size)
trans_resize = transforms.Resize((512,512))
# img PIL --> resize --> resize_img PIL
resize_img = trans_resize(img)
# resize_img PIL --> resize --> resize_img tensor
resize_img = trans_tensor(resize_img)
writer.add_image("resize",resize_img)

# 熟悉Compose的运用
trans_resize_2 = transforms.Resize(512)
compose_trans = transforms.Compose([trans_resize_2,trans_tensor])
img_resize_2 = compose_trans(img)
writer.add_image("compose",img_resize_2)

# 熟悉randomcrop
trans_random = transforms.RandomCrop((500,512))
trans_compose_2 = transforms.Compose([trans_random,trans_tensor])
for i in range(10):
    img_crop = trans_compose_2(img)
    writer.add_image('randomcup',img_crop,i)

writer.close()


### PyTorch 初学者适用的简易项目与教程 对于希望入门 PyTorch 的初学者而言,存在大量优质的资源可供选择。这些资料不仅涵盖了基础概念介绍,还提供了实际操作的机会。 #### 官方文档中的新手指南 PyTorch官方网站提供了一系列针对初次使用者设计的教学材料[^1]。这类课程通常会从最基础的知识讲起,逐步引导读者理解框架的核心功能以及如何利用它解决具体问题。 #### 自然语言处理领域内的实践案例 有关于自然语言处理方面的内容,在提供的资源列表里可以找到多个关于BERT模型的应用实例[^2]。这其中包括详细的说明文件和代码片段,能够帮助学习者快速上手基于预训练模型的任务开发工作。 #### 序列到序列模型聊天机器人构建 另一个有趣的起点可能是尝试创建一个简单的对话系统——即所谓的“chatbot”。这种方法采用了编码器-解码器架构来进行端到端的学习过程[^3]。此类型的项目非常适合那些想要深入了解文本生成机制的人群。 #### 图像分类任务实战演练 如果更倾向于计算机视觉方向,则可以从实现基本的卷积神经网络做起。以MNIST数据集为例,这是一个经典的手写数字识别挑战;通过这个练习,不仅可以掌握CNN的工作原理,还能学会怎样评估并改进算法效果[^5]。 ```python import torch from torchvision import datasets, transforms transform = transforms.Compose([transforms.ToTensor()]) train_dataset = datasets.MNIST(root='./data', train=True, download=True, transform=transform) train_loader = torch.utils.data.DataLoader(dataset=train_dataset, batch_size=64, shuffle=True) class CNN(torch.nn.Module): def __init__(self): super(CNN, self).__init__() # Define layers here def forward(self, x): pass # Implement forward propagation logic model = CNN() criterion = torch.nn.CrossEntropyLoss() optimizer = torch.optim.Adam(model.parameters(), lr=0.001) for epoch in range(num_epochs): for i, (images, labels) in enumerate(train_loader): outputs = model(images) loss = criterion(outputs, labels) optimizer.zero_grad() loss.backward() optimizer.step() print('Training complete.') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值