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

PyTorch 4.DataLoader与Dataset

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

PyTorch 4.DataLoader与Dataset

PyTorch 4.DataLoader与Dataset
  • torch.utils.data.DataLoader
  • torch.utils.data.Dataset

torch.utils.data.DataLoader
DataLoader(
			dataset,
			batch_size=1,
			shuffle=False,
			sampler=None,
			batch_sampler=None,
			num_workers=0,
			collate_fn=None,
			pin_memory=False,
			timeout=0,
			worker_init_fn=None,
			multiprocessing_context=None
)

功能:构建可迭代的数据装载器
dataset:Dataset类,决定数据从哪读取几如何读取
batchsize:批大小
num_works:是否多进程读取数据
shuffle:每个epoch是否乱序
drop_last:当样本数不能被batchsize整除时,是否舍弃最后一批数据

  1. 读哪些数据?->Sampler输出的index
  2. 从哪读数据?->Dataset中的data_dir
  3. 怎么读数据? ->Dataset中的getitem
torch.utils.data.Dataset

功能:Dataset抽象类,所有自定义的Dataset需要继承它,并且复写__getitem__()
getitem:接收一个索引,返回一个样本
Dataset的目标是根据输入的索引输出对应的image和label,而且这个功能是要在__getitem__()函数中完成的,所以当自定义数据集时,首先要继承Dataset类,还要复写__getitem__()函数

例子:

import torch
from torch import nn
from torch.utils.data import Dataset,DataLoader

class My_dataset(Dataset):
	def __init__(self):
		super().__init__()
		# 使用sin函数返回10000个时间序列,如果不自己构造数据,就使用numpy,pandas等读取自己的数据为x即可。
		# 以下数据组织这块即可以放在init方法,也可以放在getitem方法里
		self.x = torch.randn(1000,3)
		self.y = self.x.sum(axis=1)
		self.src, self.trg = [], []
		for i in range(1000):
			self.src.append(self.x[i])
			self.trg.append(self.y[i])
	def __getitem__(self,index):
		return self.src[index], self.trg[index]
	
	def __len__(self):
		return len(self.src)		

参考:
https://zhuanlan.zhihu.com/p/144373921

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/581213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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