Pytorch(二)

1. transforms的使用

在pytorch官网下载数据集,并在transforms中显示

直接打印数据集是PIL格式的,需要通过ToTensor转换格式。

root自动下载的数据集的根目录

train是否为训练集

download是否自动下载训练集设置完,运行后就自动下载数据集
train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, transform=dataset_transforms,download=True)

import torchvision

from torch.utils.tensorboard import SummaryWriter



# 将数据集转换数据格式。
dataset_transforms = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor() # 转为tensor类型

])

# root自动下载的数据集的根目录  train是否为训练集 download是否自动下载训练集
# 设置完,运行后就自动下载数据集
train_set = torchvision.datasets.CIFAR10(root="./dataset", train=True, transform=dataset_transforms,download=True)
test_set = torchvision.datasets.CIFAR10(root="./dataset", train=False,transform=dataset_transforms, download=True)
# print(test_set[0])
# print(test_set[1])
# print(test_set.classes)

img, target = test_set[0]

# print(img) # (<PIL.Image.Image image mode=RGB size=32x32 at 0x24D66551C18>, 3)
# print(target) # 类别列表的索引
# print(test_set.classes[target]) #打印此类别
# img.show() # 图片展示
# print(test_set[0])
print(img.shape)
print(img)

# 在transforms中进行展示
writer = SummaryWriter("../logs")
for i in range(10):

    img ,target = test_set[i]
    writer.add_image("torchvision" ,img, i )

writer.close()

 2. dataloader的使用

  •  batch_size=4 就是在dataset中取出四个数据进行组合,列如img0,img1,img2,img3组合在一起。这个过程是随机选择四张图片进行组合。
  • num_workers=0单进程或多进程 加载数据 设置为0是利用主进程加载数据,
  • drop_last=False将总数据分成batch_size,如果最后有剩余组不成一个batch那就,True表示舍去最后的,False表示不舍去。
  • shuffle=True 的时候所选择的图片 被随机打乱,也就是重新洗牌 false就不会重新洗牌

test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=False, num_workers=0, drop_last=True)

  • epoch作用就是为了测试shuffle的作用,进行两次迭代,是否图片的展示顺序一样,
  • step作用是,通过step的递增,使图片在一个标签中展示。
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
# 准备测试集
test_data = torchvision.datasets.CIFAR10("./dataset", train=False, transform=torchvision.transforms.ToTensor(), download=True)

#  batch_size=4 就是在dataset中取出四个数据进行组合,列如img0,img1,img2,img3组合在一起。这个过程是随机选择四张图片进行组合。
# num_workers=0单进程或多进程 加载数据 设置为0是利用主进程加载数据,
# drop_last=False将总数据分成batch_size,如果最后有剩余组不成一个batch那就,True表示舍去最后的,False表示不舍去。

#
test_loader = DataLoader(dataset=test_data, batch_size=64, shuffle=False, num_workers=0, drop_last=True)
# 测试数据集中的第一张图片
img, target = test_data[0]
print(img.shape)
print(target)

# 将数据集中所有的batch在tensorboard中进行展示

writer = SummaryWriter("dataloader")
step = 0

for epoch in range(2):#shuffle=True 的时候所选择的图片 被随机打乱,也就是重新洗牌 false就不会重新洗牌
    for data in test_loader:
        imgs, targets = data
        # print(img.shape) # torch.Size([4, 3, 32, 32]) 4表示每个batch有四个图片
        # print(target) # tensor([3, 8, 8, 0]) 表示四个图片的target

        writer.add_images("epoch:{}".format(epoch), imgs, step)
        step = step + 1

writer.close()

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值