赞
踩
自己制作数据集,并可使用DataLoader调用。
这一步生成所需数据与对应标签。注意数据与标签的对应关系。
我这里直接将一个.npy文件作为一个数据,其文件名为其对应标签。
import re import numpy as np from torch.utils import data re_paths = re.compile(r'data/unwrap/\w{4,5}\\(-?\d+\.\d+)_(-?\d+\.\d+)_(-?\d+\.\d+)\.npy') class Mydataset(data.Dataset): # 类初始化 def __init__(self, paths, transform): self.paths = paths self.transforms = transform # 进行切片 def __getitem__(self, index): # 根据给出的索引进行切片,并对其进行数据处理转换成Tensor,返回成Tensor path = self.paths[index] data = self.transforms(np.load(path)) label = np.array(list(map(np.float32, re_paths.match(path).groups()))) return data, label # 返回长度 def __len__(self): return len(self.paths)
import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader import glob from mydataset import Mydataset import numpy as np transform = transforms.Compose([ transforms.ToTensor() # 作用:第一转换成Tensor,第二将图片取值范围转换成0-1之间,第三会将channel置前 ]) train_paths = glob.glob(r'data/unwrap/train/*.npy') # 训练集地址 train_dataset = Mydataset(train_paths, transform) test_paths = glob.glob(r'data/unwrap/test/*.npy') # 测试集地址 test_dataset = Mydataset(test_paths, transform) gen = DataLoader(dataset=train_dataset, batch_size=Batch_size, shuffle=True, num_workers=0) gen_test = DataLoader(dataset=test_dataset, batch_size=Batch_size // 2, shuffle=True, num_workers=0)
经过前面3个步骤就可以使用DataLoader加载数据了。
for iteration, batch in enumerate(gen):
images, targets = batch[0], batch[1]
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。