PyTorch深度学习1数据处理与加载

PyTorch深度学习数据相关

学习笔记

数据集创建 data.Dataset

pytorch的数据集创建使用的是data.Dataset函数以及可能使用到的库:

from torch.utils import data
from torchvision import transforms as T

继承data.Dataset类创建数据集主要包含两个关键def 用以分别保证每次循环中DataLoader读取的内容以及循环的次数:

class mydataset(data.Dataset):
	def __init__(self, path, transforms=None):
		# 此处主要用以将所有的文件暂时读入一个list中
		self.imgs = get_file_paths(path) 
		self.n_samples = len(self.imgs)
		# 以及定义对于读取的文件所进行的transforms
		if transforms is not None:
			normalize = T.Normalize(mean=[], std=[])
			self.transforms = T.Compose([
				T.Scale(224), # 指定尺寸
				T.Centercrop(224),
				T.ToTensor(),
				normalize # 对于train和val此处应有变化
			])
	
	def __getitem__(self, index):
		# 每次循环中DataLoader所读取的内容由此处的return决定
		img = Image.open(imgs[index]).convert('RGB') # from PIL import Image
		label = imgs[index].split('')[] # 具体填写
		if self.transforms is not None:
			img = self.transformer(img)
		
		return img, label

	def __len__(self):
		return self.n_samples # 决定循环次数

获取文件路径的函数:

def get_file_paths(path):
	file_paths = []
	for file_name in os.listdir(path):
		file_path = os.path.join(path, file_name)
		file_parhs.append(file_path)
	file_paths = sorted(file_paths)
	return file_paths

这样就创建了一个可供DataLoader调用的Dataset类

数据载入 data.DataLoader

首先,需要实例化自己的数据集:

train_dataset = mydataset(opt.data_path, transforms=True)
# 一般需要分别创建train_loader和val_loader,并且在transforms设定上区别

接着载入该数据集:

train_loader = data.DataLoader(
	train_dataset, 
	batch_size=opt.batch_size,
	shuffle=True,
	num_workers=opt.num_workers
)

之后就可以进行循环读取img和label了:

for ii, (data, label) in tqdm(train_loader):
	train()

数据预处理 torchvision.transforms

transforms在定义之后可以直接在dataset中使用,这里仅列出常用的transforms:

torchvision.transforms.Compose(transforms) # 用于将所有变化组合在一起

transforms.Resize()
transforms.CenterCrop()
transforms.ToTensor()
transforms.Normalize(mean=[], std=[])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值