添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

数据加载分为加载torchvision.datasets中的数据集以及加载自己使用的数据集两种情况。

torchvision.datasets中的数据集

torchvision.datasets中自带MNIST,Imagenet-12,CIFAR等数据集,所有的数据集都是torch.utils.data.Dataset的子类,都包含 _ _ len _ (获取数据集长度)和 _ getItem _ _ (获取数据集中每一项)两个子方法。
这里写图片描述
Dataset源码如上,可以看到其中包含了两个没有实现的子方法,之后所有的Dataet类都继承该类,并根据数据情况定制这两个子方法的具体实现。

因此当我们需要加载自己的数据集的时候也可以借鉴这种方法,只需要继承torch.utils.data.Dataset类并重写 init ,len,以及getitem这三个方法即可。这样组着的类可以直接作为参数传入到torch.util.data.DataLoader中去。
以CIFAR10为例 源码

class torchvision.datasets.CIFAR10(root, train=True, transform=None, target_transform=None, download=False)
root (string) – Root directory of dataset where directory cifar-10-batches-py exists or will be saved to if download is set to True.
train (bool, optional) – If True, creates dataset from training set, otherwise creates from test set.
transform (callable, optional) – A function/transform that takes in an PIL image and returns a transformed version. E.g, transforms.RandomCrop
target_transform (callable, optional) – A function/transform that takes in the target and transforms it.
download (bool, optional) – If true, downloads the dataset from the internet and puts it in root directory. If dataset is already downloaded, it is not downloaded again.

加载自己的数据集

对于torchvision.datasets中有两个不同的类,分别为DatasetFolder和ImageFolder,ImageFolder是继承自DatasetFolder。
下面我们通过源码来看一看folder文件中DatasetFolder和ImageFolder分别做了些什么

import torch.utils.data as data
from PIL import Image
import os
import os.path
def has_file_allowed_extension(filename, extensions):  //检查输入是否是规定的扩展名
    """Checks if a file is an allowed extension.
    Args:
        filename (string): path to a file
    Returns:
        bool: True if the filename ends with a known image extension
    filename_lower = filename.lower()
    return any(filename_lower.endswith(ext) for ext in extensions)
def find_classes(dir):
    classes = [d for d in os.listdir(dir) if os.path.isdir(os.path.join(dir, d))] //获取root目录下所有的文件夹名称
    classes.sort()
    class_to_idx = {classes[i]: i for i in range(len(classes))} //生成类别名称与类别id的对应Dictionary
    return classes, class_to_idx
def make_dataset(dir, class_to_idx, extensions):
    images = []
    dir = os.path.expanduser(dir)// 将~和~user转化为用户目录,对参数中出现~进行处理
    for target in sorted(os.listdir(dir)):
        d = os.path.join(dir, target)
        if not os.path.isdir(d)
本文意在对 Pytorch 的分布式框架和 数据 处理流程进行调研,方便之后对AI训练框架对接分布式 数据 库做准备。主要是为了应对AI任务训练 数据 量的逐渐增大,以及 数据 分散无法集中处理的情况。目前也在研究中。 下 安装GPU版的 Pytorch 网络上已经有很多教程,Anaconda+ PyTorch 这里推荐b站的,简单易懂,跟着一步步走大体上是没有问题的视频是2022年的,2023年 pytorch 更新版本后有些许的不一样,下面分享下我这次下 安装遇到的问题和解决办法。 在创建Jupyter笔记本之后,我们先来学习一下Numpy。Numpy是python中最常见的用于科学计算的基础包,有对数组进行快速操作的一系列方法,包括数学运算、逻辑运算、分片操作、排序、选择、输入输出、离散傅里叶变换、基本线性代数、基本统计运算、随机模拟等。 Numpy的核心是ndarray对象,它封装了相同 数据 类型的n维数组。 Numpy的数组类为ndarray,通常也被称作数组。ndarray对象的属性有: ndarray.ndim: 数组轴的个数 ndarray.shape: 数. 当保存和 模型时,需要熟悉三个核心功能: torch.save:将序列化对象保存到磁盘。此函数使用Python的pickle模块进行序列化。使用此函数可以保存如模型、tensor、字典等各种对象。 torch.load:使用pickle的unpickling功能,将pickle对象文件反序列化到内存。此功能还可以有助于设备 数据 。 torch.nn.Module.load_state_dict:使用反序列化函数 state_dict 来 模型的参数字典。 什么是状态字典:state_ 创建一个类,继承自torch.utils.data.Dataset,并重写__len__()和__init__用于向类中传入外部参数,同时定义样本集__len__()方法应该返回 数据 集的大小方法应该返回一个样本这里另外给出一个例子,其中图片存放在一个文件夹,另外有一个csv文件给出了图片名称对应的标签。Args:Args:Returns:其中:batch_size:样本是按“批”读入的,batch_size就是每次读入的样本数。 torchvision.transforms是一个包含了常用的图像变化方法的工具包,该工具包主要用于图像 预处理 数据 增强等工作之中。本实验,将详细介绍torchvision.transforms中常用的 数据 处理函数。 第四节: Pytorch 数据 处理与模型保存 本节将讲解 数据 操作与模型保存 其中 数据 处理包含 数据 处理与 数据 导入, 数据 处理能够帮助导入训练 数据 集,对 数据 进行正则化等功能 此外模型保存将会帮助我们保存已有的成果 这节讲解完毕我们就已经能够训练我们自己的网络,下一节我们将讲解网络结构可视化相关工具来帮助我们检测、表达网络的结构 数据 处理 Pytorch 的torch.util.data模块中包含着一系列常用的 数据 预处理 的函数或类,其中有 数据 的读取、切分、准备等内容 我们下面对于某一类任务的具体 数据 处理都将基于 1. 我们经常可以看到 Pytorch 数据 集会用到官方整理好的 数据 集。很多时候我们需要 自己的 数据 集,这时候我们需要使用Dataset和DataLoader Dataset:是被封装进DataLoader里,实现该方法封装自己的 数据 和标签。 DataLoader:被封装入DataLoaderIter里,实现该方法达到 数据 的划分。 2.Dataset 阅读源码后,我们可以指导,继承该方法必须.........