栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

2.Datasets

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2.Datasets

构建自己的数据集
from torchvision import datasets
from torch.utils.data import Dataset
from torch.utils.data import DataLoader
from torchvision import transforms
import os
from PIL import Image


# 构建自己的数据集
class RMBDataset(Dataset):
    def __init__(self, data, transform=None):
        """
        rmb面额分类任务的Dataset
        :param data_dir: str, 数据集所在路径
        :param transform: torch.transform,数据预处理
        """
        self.data = data  #
        self.transform = transform

    def __getitem__(self, index):
        img, label = self.data[index]  # 已经是PIL格式
        # img = Image.open(img).convert('RGB')     # 0~255

        if self.transform is not None:  # 在这个时候进行预处理,也是单张单张的处理
            img = self.transform(img)  # 在这里做transform,转为tensor等等

        return img, label

    def __len__(self):
        return len(self.data)


# 下载并载入数据
train_data = datasets.CIFAR10("./data", train=True, download=False)
test_data = datasets.CIFAR10("./data", train=False, download=False)
# print(test_data.classes)  # 打印标签属性
# image, label = test_data[0]
# print(type(image))
# print(len(train_data))

# # 数据预处理方法
data_transform = {
    "train": transforms.Compose([transforms.ToTensor(), transforms.RandomHorizontalFlip(0.5)]),  # 随机水平翻转
    "test": transforms.Compose([transforms.ToTensor()])
}

## 构建MyDataset实例
train_data = RMBDataset(data=train_data, transform=data_transform["train"])
valid_data = RMBDataset(data=test_data, transform=data_transform["test"])

# 使用DataLoader抽取数据,
train_loader = DataLoader(dataset=train_data, batch_size=4, shuffle=True, drop_last=True)
test_loader = DataLoader(dataset=test_data, batch_size=4, shuffle=True, drop_last=True)

# 迭代图片
for epoch in range(5):
    loss_mean = 0.
    correct = 0.
    total = 0.

    for i, data in enumerate(train_loader):
        # forward
        inputs, labels = data  # 会分别将image, label打包返回
DataLoader

数据加载器。结合数据集和采样器,并提供给定数据集的可迭代对象。 torch.utils.data.DataLoader支持单进程或多进程加载的地图样式和可迭代样式数据集,自定义加载顺序和可选的自动批处理(整理)和内存固定。

参数
 Args:
 		dataset:下载或载入的数据集
 		batch_size:(int, optional),batch_size的大小
 		shuffle:(bool, optional),是否随机打乱
 		sampler:(Sampler or Iterable, optional),定义从数据集中抽取样本的策略。可以是任何实现了 __len__ 的 ``Iterable``。如果指定,则不能指定 :attr:`shuffle`。
 		batch_sampler:
 		num_workers:(int, optional) 用于数据加载的子进程数。 ``0`` 表示数据将在主进程中加载。 (默认值:``0``)
 		collate_fn:
 		pin_memory(bool, optional): 如果为“True”,数据加载器将在返回之前将张量复制到 CUDA 固定内存中。如果您的数据元素是自定义类型,或者您的 collate_fn 返回一个自定义类型的批次,请参见下面的示例。
 		 drop_last (bool, optional): 如果数据集大小不能被批次大小整除,则设置为 True 以删除最后一个不完整的批次。如果 ``False`` 并且数据集的大小不能被批大小整除,那么最后一批将更小。 (默认:“假”)
 		 timeout (numeric, optional): 如果为正,则从工人那里收集批次的超时值。应始终为非负数。 (默认值:``0``)
 		 worker_init_fn (callable, optional):
 		 generator (torch.Generator, optional):
 		 prefetch_factor (int, optional, keyword-only arg):
 		 persistent_workers:
暑期编程PK赛 得CSDN机械键盘等精美礼品!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1015975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号