Dataset类 和 Dataloader类
from torch.utils.data import Dataset
from PIL import Image
class DogsandCatsDataset(Dataset):
def __init__(self,root_dir,size=(224,224)):
self.files=glob(root_dir)
self.size=size#可选参数
def __len__(self):
return len(self.files)
def __getitem__(self,idx):
img=np.asarray(Image.open(self.files[idx]).resize(self.size))
label=self.files[idx].split("/")[-2]##咋是这样的,看数据格式吧
return img,label
然鹅我们不可能一个一个地抽取数据
于是,我们学会了构建Dataloader类,我不会。
file=glob(os.path.join(path,"*.jpg") #*代表任何东西
shuffle=np.random.permutation(length)# shuffle一下
#os.mkdir(os.path.join(path,'train'))
#os.mkdir(os.path.join(path,'valid')) ###创造了两个文件夹
for c in ["train","valid"]:
for t in ["dog/",'cat/']:
os.mkdir(os.path.join(path,c,t)) #mkdir是创造新的文件夹,想要移动位置用下面的
for i in shuffle[:2000]:
folder=files[i].split('\\')[-1].split('.')[0]
img=files[i].split('\\')[-1] #有趣
os.rename(files[i],os.path.join(path,'valid',folder,img))
for i in shuffle[2000:]:
folder=files[i].split("\\")[-1].split('.')[0]
img=files[i].split('\\')[-1] #治好了我的精神内耗
os.rename(files[i],os.path.join(path,'train',folder,img))
###### 有点流批 #全部移到我想要的数据集了
看书三天,治好了我的pytorch精神内耗。