三、如何搞自定义数据集?
生活随笔
收集整理的這篇文章主要介紹了
三、如何搞自定义数据集?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 前言
- 一、定義的數(shù)據(jù)集,未做預處理。
- 二、定義數(shù)據(jù)集,并做數(shù)據(jù)預處理。
- 1.預處理部分
- 2.定義數(shù)據(jù)過程
前言
MNIST數(shù)據(jù)這個最最基礎的數(shù)據(jù)集已經(jīng)被走在程序猿道路上的同學們玩壞了,所以今天教大家如何搞一個自定義數(shù)據(jù)集。
一、定義的數(shù)據(jù)集,未做預處理。
下面展示一些 內(nèi)聯(lián)代碼片。
import os
from torch.utils.data import Dataset ,DataLoader
from PIL import Image#1.創(chuàng)建數(shù)據(jù)集類,使用torch.utils.data中的Dataset方法。
class My_Dataset(Dataset):#2.循環(huán)找到文件路徑,并添加標簽def __init__(self,main_dir,data_type,transforms):self.dataset=[]#空列表為裝新增一個標簽的數(shù)據(jù)庫self.transforms=transformsif data_type==0:data_filename='train'elif data_type is 1:data_filename='val'else:data_filename='test'for i , cls_filename in enumerate(os.listdir(os.path.join(main_dir,data_filename))):for i ,img_data in enumerate(os.listdir(os.path.join(main_dir,data_filename,cls_filename))):self.dataset.append([os.path.join(main_dir,data_filename,cls_filename,img_data),int(img_data[0]) ])#3.計算圖片長度,方便后面迭代def __len__(self):return len(self.dataset)#為了獲取圖片長度,方便迭代#4、取出圖片路徑,并打開,便于做數(shù)據(jù)預處理def __getitem__(self, index):img,label=self.dataset[index]img_data=Image.open(img)img_data=self.transforms(img_data)return img_data,label
示例:@TOC
二、定義數(shù)據(jù)集,并做數(shù)據(jù)預處理。
包括旋轉(zhuǎn)、裁剪、轉(zhuǎn)為張量、擴大、正則化等等。
1.預處理部分
#4、取出圖片路徑,并打開,便于做數(shù)據(jù)預處理
def __getitem__(self, index):img,label=self.dataset[index]img_data=self.data_process(Image.open(img))return img_data,label#5.數(shù)據(jù)處理,數(shù)據(jù)增強、加噪聲等等
def data_process(self,x):return transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean=(0.5,),std=(0.5,))])(x)
2.定義數(shù)據(jù)過程
代碼如下(示例):
import os
from torchvision import transforms
from torch.utils.data import Dataset ,DataLoader
from PIL import Image#1.創(chuàng)建數(shù)據(jù)集類,使用torch.utils.data中的Dataset方法。
class My_Dataset(Dataset):#2.循環(huán)找到文件路徑,并添加標簽def __init__(self,main_dir,data_type):self.dataset=[]#空列表為裝新增一個標簽的數(shù)據(jù)庫if data_type==0:data_filename='train'elif data_type is 1:data_filename='val'else:data_filename='test'for i , cls_filename in enumerate(os.listdir(os.path.join(main_dir,data_filename))):for i ,img_data in enumerate(os.listdir(os.path.join(main_dir,data_filename,cls_filename))):self.dataset.append([os.path.join(main_dir,data_filename,cls_filename,img_data),i ])#3.計算圖片長度,方便后面迭代def __len__(self):return len(self.dataset)#為了獲取圖片長度,方便迭代#4、取出圖片路徑,并打開,便于做數(shù)據(jù)預處理def __getitem__(self, index):img,label=self.dataset[index]img_data=self.data_process(Image.open(img))return img_data,label#5.數(shù)據(jù)處理,數(shù)據(jù)增強、加噪聲等等def data_process(self,x):return transforms.Compose([transforms.ToTensor(),transforms.Normalize(mean=(0.5,),std=(0.5,))])(x)
``
總結
以上是生活随笔為你收集整理的三、如何搞自定义数据集?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二、如何保存MNIST数据集中train
- 下一篇: 四、One-hot和损失函数的应用