pytorch: utils.data 使用案例(自定义数据集)

本文详细介绍如何使用PyTorch的utils.data模块自定义数据集,包括Dataset和DataLoader的实现与应用。通过实例演示了如何创建数据集类,实现__len__和__getitem__方法,以及如何利用DataLoader进行数据的批量读取和迭代。
摘要由CSDN通过智能技术生成

pytorch: utils.data 使用案例(自定义数据集)

utils.data包括Dataset和DataLoader。 torch.utils.data.Dataset为抽象类。 自定义数据集需
要继承这个类, 并实现两个函数, 一个是__len__, 另一个是__getitem__, 前者提供数据
的大小(size) , 后者通过给定索引获取数据和标签。

__getitem__一次只能获取一个数据, 所以需要通过torch.utils.data.DataLoader来定义一个新的迭代器, 实现batch读取。

首先我们来定义一个简单的数据集, 然后通过具体使用Dataset及DataLoader, 有一个直观的认识。

导入模块
import math 
from torch.utils import data
import numpy as np
import torch
定义数据集的类
class TestDataset(data.Dataset):
    def __init__(self):
        self.Data=np.asarray([[1,2],[3,4],[2,1],[3,4],[4,5]])
        self.Label=np.asarray([0,1,0,1,2])
    def __getitem__(self,index):
        txt=torch.from_numpy(self.Data[index])
        Label=torch.tensor(self.Label[index])
        return txt,Label
    def __len__(self):
        return len(self.Data)    
获取数据集中的数据
Test=TestDataset()
print(Test[2])    #相当于__getitem__(2)
print(Test.__len__())
批量读取
test_loader=data.DataLoader(Test,batch_size=2,shuffle=False,num_workers=0)
for i, traindata in enumerate(test_loader):
    print("i:",i)
    Data,Label=traindata
    print("data:",Data)
    print("Label:",Label)       #分批次传入
转换成迭代器形式
test_loader=data.DataLoader(Test,batch_size=2,shuffle=False,num_workers=0)
dataiter=iter(test_loader)
Data,Label=next(dataiter)
for i ,dataiter in enumerate(test_loader):
    print("i:",i)
    print("data:",Data)
    print("Label:",Label)       #分批次传入
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值