pytorch数据处理:定义自己的数据集合实例

  

数据处理

  

<>强版1本

        #数据处理   进口操作系统   进口火炬   从火炬。跑龙套导入数据   从公益诉讼导入图像   进口numpy np      #定义自己的数据集合   类DogCat (data.Dataset):      def __init__(自我,根):   #所有图片的绝对路径   一个=os.listdir(根)      self.imgs=[os.path.join(根、k) k的一个      def __getitem__(自我,指数):   img_path=self.imgs(指数)   #狗→1只猫→0   标签=1如果img_path.split“狗”(“/?[1]0   pil_img=Image.open (img_path)   数组=np.asarray (pil_img)   data=https://www.yisu.com/zixun/torch.from_numpy(数组)   返回数据、标签      def __len__(自我):   返回len (self.imgs)      数据集=DogCat(“。/数据/DogCat”)      打印(数据集[0])   之前      

输出:         (   (0)=215 203 191   206 194 182   211 199 187   & # 8942;   200 191 186   201 192 187   201 192 187      (1)=215 203 191   208 196 184   213 201 189   & # 8942;   198 189 184   200 191 186   201 192 187      (2)=215 201 188   209 195 182   214 200 187   & # 8942;   200 191 186   202 193 188   204 195 190   …      (399年)=72 90 32   88 106年48   38 56个0   & # 8942;   158 161 106   36 87 85   105 98 52   (火炬。ByteTensor大小400 x300x3]   , 1)   之前      

<强>上面的数据处理有下面的问题:

  

1。返回的样本的形状大小不一致,每一张图片的大小不一样。这对于需要批训练的神经网络来说很不友好。

  

2。返回的数据样本数值很大,没有归一化【1】

1   

对于上面的问题,pytorch torchvision是一个视觉化的工具包,提供了很多的图像处理的工具,其中变换模块提供了对公益诉讼的形象对象和张量对象的常用操作。

  

<强>对公益诉讼的形象常见的操作如下;

  

调整调整图片的尺寸,长宽比保持不变

  

CentorCrop、RandomCrop RandomSizeCrop裁剪图片

  

垫填充   

ToTensor将公益诉讼图像转换为张量,会自动将[0255]归一化至[0,1]

  

<强>对张量的操作如下:

  

规范化标准化,即减均值,除以标准差

  

ToPILImage将张量转换为公益诉讼对图像象

  

<>强版本2

        #数据处理   进口操作系统   进口火炬   从火炬。跑龙套导入数据   从公益诉讼导入图像   进口numpy np   从torchvision导入转换      变换=transforms.Compose ([   transforms.Resize(224), #缩放图片,保持长宽比不变,最短边的长为224像素,   #从transforms.CenterCrop(224),中间切出224 * 224的图片   transforms.ToTensor(), #将图片转换为张量,归一化至[0,1]   transforms.Normalize(意味着=[5、5、5],std=[5、5、5]) #标准化至[1]   ])      #定义自己的数据集合   类DogCat (data.Dataset):      def __init__(自我,根):   #所有图片的绝对路径   一个=os.listdir(根)      self.imgs=[os.path.join(根、k) k的一个   self.transforms=变换      def __getitem__(自我,指数):   img_path=self.imgs(指数)   #狗→1只猫→0   标签=1如果img_path.split“狗”(“/?[1]0   pil_img=Image.open (img_path)   如果self.transforms:   data=https://www.yisu.com/zixun/self.transforms (pil_img)   其他:   pil_img=np.asarray (pil_img)   data=torch.from_numpy (pil_img)   返回数据、标签      def __len__(自我):   返回len (self.imgs)      数据集=DogCat(“。/数据/DogCat”)      打印(数据集[0])   之前      

输出:         (   (0)=-0.2000 - -0.2627 -0.0824 -0.1765 -0.2627 -0.1686…   -0.2078 - -0.1765 -0.2863 -0.2392 -0.3098 -0.3176…   -0.1137 - -0.0118 -0.2941 -0.3176 -0.2392 -0.2784…   …& # 8945;…   -0.8196 - -0.8353 -0.8510 -0.7569 -0.5922 -0.1529…   -0.8196 - -0.8588 -0.8275 -0.8353 -0.7255 -0.3255…   -0.8353 - -0.8824 -0.8196 -0.9373 -0.7647 -0.4510…      (1)=-0.0980 - -0.1529 0.0118 -0.0431 -0.1373 -0.0431…   -0.0745 - -0.0431 -0.1608 -0.0980 -0.1686 -0.1765…   0.0431 - 0.1529 -0.1451 -0.1686 -0.0902 -0.1373…   …& # 8945;…   -0.7725 - -0.7961 -0.7961 -0.5529 -0.3804 0.0667…   -0.7882 - -0.8275 -0.7804 -0.6314 -0.5137 -0.1137…   -0.8039 - -0.8588 -0.7725 -0.7490 -0.5608 -0.2392…   …   (火炬。FloatTensor大小3 x224x224]   , 1)   

pytorch数据处理:定义自己的数据集合实例