import torch
import torch.nn as nn
import torchvision.transforms as transforms
import torchvision
from torchvision import transforms,datasets
import os,PIL,pathlib,random
data_dir= "D:/BaiduNetdiskDownload/第5天/data/"
data_dir=pathlib.Path(data_dir)
data_paths=list(data_dir.glob('*'))
#将所有文件夹下的路径全部放入一个列表,列表中第一个内容为WindowsPath('D:/BaiduNetdiskDownload/第5天/data/cloudy'),一共四个内容
print(data_paths)
class_names=[str(path).split("\\")[-1] for path in data_paths]
#相当于用for对刚才的四条内容批量操作,对每一条内容用str将其转化成字符串,然后用split对字符串用\\进行分割,但是我们要取的内容却是最后一个内容
print(class_names)
train_transforms=transforms.Compose([transforms.Resize([224,224]),
transforms.ToTensor(),
transforms.Normalize(
mean=[0.485,0.456,0.406],
std=[0.229,0.224,0.225])
])
#compose可以理解为一个预处理包,将所有步骤都合并在一起,第一步,重新调整大小,第二步,转化成tensor格式,第三步,批量归一化,均值为多少,方差为多少
#对于均值和方差,可以理解为经过大量图像数据计算而得的,一般用这个数据进行标准化
total_datadir="D:/BaiduNetdiskDownload/第5天/data/"
total_data=datasets.ImageFolder(total_datadir,transform=train_transforms)
#datasets.ImageFolder可以认为是加载图像数据集,其中第一个为根目录,第二个为生成一个转变好的数据
print(total_data)
train_size=int(0.8*len(total_data))
print(train_size)
test_size=len(total_data)-train_size
pri