pytorch 数据处理:定义自己的数据集合实例
(编辑:jimmy 日期: 2024/11/20 浏览:3 次 )
数据处理
版本1
#数据处理 import os import torch from torch.utils import data from PIL import Image import numpy as np #定义自己的数据集合 class DogCat(data.Dataset): def __init__(self,root): #所有图片的绝对路径 imgs=os.listdir(root) self.imgs=[os.path.join(root,k) for k in imgs] def __getitem__(self, index): img_path=self.imgs[index] #dog-> 1 cat ->0 label=1 if 'dog' in img_path.split('/')[-1] else 0 pil_img=Image.open(img_path) array=np.asarray(pil_img) data=torch.from_numpy(array) return data,label def __len__(self): return len(self.imgs) dataSet=DogCat('./data/dogcat') print(dataSet[0])
输出:
( ( 0 ,.,.) = 215 203 191 206 194 182 211 199 187 "htmlcode">#数据处理 import os import torch from torch.utils import data from PIL import Image import numpy as np from torchvision import transforms transform=transforms.Compose([ transforms.Resize(224), #缩放图片,保持长宽比不变,最短边的长为224像素, transforms.CenterCrop(224), #从中间切出 224*224的图片 transforms.ToTensor(), #将图片转换为Tensor,归一化至[0,1] transforms.Normalize(mean=[.5,.5,.5],std=[.5,.5,.5]) #标准化至[-1,1] ]) #定义自己的数据集合 class DogCat(data.Dataset): def __init__(self,root): #所有图片的绝对路径 imgs=os.listdir(root) self.imgs=[os.path.join(root,k) for k in imgs] self.transforms=transform def __getitem__(self, index): img_path=self.imgs[index] #dog-> 1 cat ->0 label=1 if 'dog' in img_path.split('/')[-1] else 0 pil_img=Image.open(img_path) if self.transforms: data=self.transforms(pil_img) else: pil_img=np.asarray(pil_img) data=torch.from_numpy(pil_img) return data,label def __len__(self): return len(self.imgs) dataSet=DogCat('./data/dogcat') print(dataSet[0])输出:
( ( 0 ,.,.) = -0.1765 -0.2627 -0.1686 … -0.0824 -0.2000 -0.2627 -0.2392 -0.3098 -0.3176 … -0.2863 -0.2078 -0.1765 -0.3176 -0.2392 -0.2784 … -0.2941 -0.1137 -0.0118 … "_blank" href="https://github.com/WebLearning17/CommonTool" rel="external nofollow" >https://github.com/WebLearning17/CommonTool以上这篇pytorch 数据处理:定义自己的数据集合实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
下一篇:解决Pytorch训练过程中loss不下降的问题