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组合情况不一样

相关推荐
snow@li11 分钟前
服务器运维:Node.js 安装笔记(Alibaba Cloud Linux 4)
笔记
江湖人称菠萝包17 分钟前
【Windows】《深入浅出Windows API程序设计:编程基础篇》笔记-Chapter9-对话框
windows·笔记
David猪大卫19 分钟前
【C++修炼】异常
开发语言·c++·经验分享·笔记·学习·考研·面试
GHL28427109021 分钟前
豆包换脸学习
学习·ai
youm200333 分钟前
【学习笔记】reids的数据类型
redis·笔记·学习
老猿讲编程35 分钟前
【Eclipse OpenSOVD学习之五】拓扑引擎(Topology)
学习·rust·eclipse·sovd
励志不掉头发的内向程序员42 分钟前
【LibreCAD 2D架构】RS_Line创建之后发生了什么?从图形容器到屏幕渲染
开发语言·c++·qt·学习·系统架构
hanlin032 小时前
刷题笔记:力扣第84题-柱状图中最大的矩形
笔记·算法·leetcode
一米阳光866110 小时前
软考高级【信息系统项目管理师】高项重要考点(3)高级项目管理-下 助你顺利上岸!
笔记·职场发展·软考·信息系统项目管理师·高级职称
微功夫信息技术10 小时前
分层多智能体强化学习驱动的非急救转运公平 - 效率统一调度系统研究与实践
人工智能·学习·算法·动态规划