Pytorch个人学习记录总结 04

目录

torchvision

DataLoader


torchvision

transforams是对单张图片进行处理,而制作数据集的时候,是需要对图像进行批量处理的。因此本节是将torchvision中的datasetstransforms联合使用对数据集进行预处理操作。

  1. (torchvision官方文档地址:torchvision --- Torchvision 0.15 documentation

  2. torchvision.datasets中提供了内置数据集和自定义数据集所需的函数(DatasetFolder、ImageFolder、VisionDataset)(torchvision.datasets官方文档地址:Datasets --- Torchvision 0.15 documentation

  3. torchvision.models中包含了已经训练好的图像分类、图像分割、目标检测的神经网络模型。(torchvision.models的官方文档地址:Models and pre-trained weights --- Torchvision 0.15 documentation

  4. torchvision.transforms对图像进行转换和增强(torchvision.transforms的官方文档地址:Transforming and augmenting images --- Torchvision 0.15 documentation

  5. torchvision.utils包含各种实用工具,主要用于可视化(tensorboard是在torch.utils.tensorboard中)(torchvision.utils的官方文档地址:Utils --- Torchvision 0.15 documentation

    python 复制代码
    import torchvision
    from torch.utils.tensorboard import SummaryWriter
    from torchvision.transforms import transforms
    
    # 1. 用transforms设置图片转换方式
    data_transform = transforms.Compose([  # 用Compose将所有转换操作集合起来
        transforms.ToTensor()  # 因为CIFAR10数据集的每张图像size=(32,32)比较小,所以只进行ToTensor的操作
    ])
    
    # 2. 加载内置数据集CIFAR10,并设置transforms(download最好一直设置成True)
    #   1. root:(若要下载的话)表示数据集存放的根目录
    #   2. train=True 或者 False,分别表示是构造训练集train_set还是测试集test_set
    #   3. transform = data_transform,用自定义的data_transform对数据集中的每张图像进行预处理
    #   4. download=True 或者 False,分别表示是否从网上下载数据集到root中(如果root下已有数据集,尽管设置成True也不会再下载了,所以download最好一直设置成True)
    train_set = torchvision.datasets.CIFAR10('./dataset', train=True, transform=data_transform, download=True)
    test_set = torchvision.datasets.CIFAR10('./dataset', train=False, transform=data_transform, download=True)
    
    # 3. 写进tensorboard查看
    writer = SummaryWriter('CIFAR10')
    for i in range(10):
        img, label = test_set[i]    # test_set[i]返回的依次是图像(PIL.Image)和类别(int)
        writer.add_image('test_set', img, i)
    
    writer.close()

    DataLoader

官方文档地址:torch.utils.data.DataLoader

python 复制代码
CLASS torch.utils.data.DataLoader(dataset, batch_size=1, shuffle=False, 
	sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, 
	pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None, 
	multiprocessing_context=None, generator=None, *, prefetch_factor=2, 
	persistent_workers=False)

除了dataset(指明数据集的位置)之外的参数都设置了默认值。

torch.utils.data.DataLoader重点关注的参数有:

  • dataset (Dataset) :指明从哪个数据集加载数据(如上节中自定义的train_set
  • batch_size (int):每个批次(batch)加载多少样本。
  • shuffle (bool) :每轮(epoch)是否打乱样本的顺序。(最好设置成True)
  • num_workers (int) :有多少个子流程用于数据加载。0表示主进程加载。
  • (在Windows下只能设置成0,不然会出错!虽然default=0,但是最好还是手动再设置一下num_workers=0)
  • drop_last (bool) :如果数据集大小不能被batch_size整除,则最后一个批次将会不完整(即样本数<batch_size)。设置为True则删掉最后一个batch,False则保留(默认为False,即会保存最后那个不完整的批次)。
相关推荐
guoketg几秒前
Vision Transformer(ViT)的讲解和面试题目讲解
人工智能·python·深度学习·vit
Dontla1 分钟前
Mock Interview模拟面试,20260108,MNC第二面技术面,AI Engineer
人工智能·面试·职场和发展
小咖自动剪辑1 分钟前
免费超强图片压缩工具:批量操作 + 高效传输不失真
人工智能·音视频·语音识别·实时音视频·视频编解码
纠结哥_Shrek3 分钟前
不均衡分布原则进行选品
大数据·人工智能
北京耐用通信4 分钟前
耐达讯自动化“通关文牒”:Canopen转Profibus网关,贴片机的“协议通关秘籍”
人工智能·科技·网络协议·自动化·信息与通信
_codemonster6 分钟前
计算机视觉入门到实战系列(六)边缘检测sobel算子
人工智能·计算机视觉
杀生丸学AI7 分钟前
【平面重建】3D高斯平面:混合2D/3D光场重建(NeurIPS2025)
人工智能·平面·3d·大模型·aigc·高斯泼溅·空间智能
九河_8 分钟前
四元数 --> 双四元数
人工智能·四元数·双四元数
Gofarlic_oms19 分钟前
从手动统计到自动化:企业AutoCAD许可管理进化史
大数据·运维·网络·人工智能·微服务·自动化
叫我:松哥10 分钟前
基于 Flask 框架开发的在线学习平台,集成人工智能技术,提供分类练习、随机练习、智能推荐等多种学习模式
人工智能·后端·python·学习·信息可视化·flask·推荐算法