pytorch学习笔记-使用DataLoader加载固有Datasets(CIFAR10),使用tensorboard进行可视化

大概就是DataLoader的基本语法操作吧...毕竟博主也是刚开始学习

python 复制代码
import torchvision
from torchvision import transforms, datasets
from torch.utils.tensorboard import SummaryWriter
from torch.utils.data import DataLoader

说明一下下面的transforms虽然只用了一个可以直接写到datasets.CIFAR10里面完全没问题,但是我还是更加建议下面的这样写,感觉是一个更好的习惯,对于以后使用多个transform的组合时很有利~

transfrom的使用具体可以参考上一篇blog

python 复制代码
#设置通用transforms
dataset_transfroms = transforms.Compose([
    transforms.ToTensor()
])

test_data = datasets.CIFAR10(root="./dataset",
                            train=False,
                            transform=dataset_transfroms)

num_workers:采用设置的子进程加载数据到内存

drop_last:数据总量对batch_size取余,余数部分是否drop

呃这里为什么要单独列出来一下呢是因为想提醒一下最好drop,因为博主隐约记得自己好像踩过batch_size大小不一样的报错坑(

python 复制代码
# num_workers:采用设置的子进程加载数据到内存
# drop_last:数据总量对batch_size取余,余数部分是否drop
test_loader = DataLoader(dataset=test_data,
                        batch_size=64,
                        shuffle=True,
                        num_workers=0,
                        drop_last=True)

# img, target = test_data[0]

writer = SummaryWriter("dataloader_logs")

注(以下为个人理解,有错欢迎指正):

  1. test_loader是按批次读取的,一次读出的(也就是data)是含有batch_size个图片的
  2. 单次epoch 中需要学到所有数据
  3. 内循环中,会将所有数据都遍历到,外层循环中,决定epoch次学习所有数据
  4. 在深度学习训练中,对数据进行打乱 ,然后多次epoch读取到不同内容组合的batch数据进行学习
python 复制代码
# test_loader是按批次读取的,一次读出的(也就是data)是含有batch_size个图片的
# 单次epoch中需要学到所有数据
# 内循环中,会将所有数据都遍历到,外层循环中,决定epoch次学习所有数据
# 在深度学习训练中,对数据进行打乱,然后多次epoch读取到不同内容的batch的数据进行学习
# 添加多张图是add_images
for epoch in range(5):
    step=0
    for data in test_loader: 
        imgs, target = data
        writer.add_images("epoch_{}".format(epoch),imgs,step)
        step +=1

writer.close()

# tensorboard --logdir=dataloader_logs

随便截了不同epoch的最后一个batch构成情况,可以看到内容组合不一样,这是因为我们进行了打乱操作,这样可以保证不同的epoch学习到的batch组合情况不一样

相关推荐
sjh210014 小时前
【学习笔记】20年前的微芯an1078foc技术,smo滑模位置估计,反电动势波形还不错,为何位置估计反而超前了呢?
笔记·学习
大白的编程日记.14 小时前
【MySQL学习笔记】数据库的CURD(一)
数据库·学习·mysql
航Hang*15 小时前
Kurt-Blender零基础教程:第3章:材质篇——第1节:材质基础~原理化BSDF,添加有纹理材质与用蒙版做纹理叠加
笔记·blender·材质·建模
泽虞16 小时前
《C++程序设计》笔记p4
linux·开发语言·c++·笔记·算法
峥嵘life16 小时前
Android16 应用代码新特性
java·开发语言·学习·安全
Roye_ack17 小时前
【项目实战 Day5】springboot + vue 苍穹外卖系统(Redis + 店铺经营状态模块 完结)
java·spring boot·redis·学习·mybatis
峰顶听歌的鲸鱼17 小时前
29.Linux防火墙管理
linux·运维·网络·笔记·学习方法
zhurui_xiaozhuzaizai17 小时前
大模型里使用的pytorch dataset 和dataloader详细解析和介绍
人工智能·pytorch·python
jun~17 小时前
SQLMap绕过 Web 应用程序保护靶机(打靶记录)
linux·笔记·学习·安全·web安全
鲸鱼240117 小时前
Pytorch工具箱2
人工智能·pytorch·python