在juggle上下载的数据为label在文件夹上的图片数据,主要使用dataset类将图片数据和label同时导入,参考视频在b站,数据下载链接:ML 2021 Spring
链接:【绝对干货】pytorch加载自己的数据集,数据集载入-视频合集_哔哩哔哩_bilibili
from torch.utils.data import Dataset,DataLoader
import matplotlib.pyplot as plt
import torch
from torchvision import transforms,utils,datasets
hymenoptera_dataset = datasets.ImageFolder(root=r"F:李宏毅food-11traininglabeled",
transform=None)
dataset_loader = torch.utils.data.DataLoader(hymenoptera_dataset,batch_size=4,shuffle=True)
主要存储数据的代码就是两句话,使用datasets.ImageFolder()读取文件,然后使用DataLoader将读取的文件储存下来,但是存储下来的数据不知道什么原因(本人小白,刚学一个星期python)无法直接索引
像上图的索引会显示,对象不可订阅(调用?),不是很懂
只能使用for循环将数据每次按照,batch_size= 4调用数据
for image,label in dataset_loader: print(image) #batch_size个的图像数据,上面batch_size=4,就是一次取4个三维图像数据 print(label) # 一次取4个图像对应的label #最终遍历完所有的图像,所以我们处理图像时只要在这个循环中处理就可以了
然后如果你想预处理你的图像数据,可以加入transform
from torch.utils.data import Dataset,DataLoader
import matplotlib.pyplot as plt
import torch
from torchvision import transforms,utils,datasets
'''定义一个transform处理图片'''
data_transform = transforms.Compose([
transforms.Resize(32),#缩放图片,保持长宽比不变,最短边为32像素
transforms.CenterCrop(32),#从图片中间切出32*32的图片
transforms.ToTensor(),#将图片从image转为tensor
transforms.Normalize(mean=[0.492,0.461,0.417],std=[0.256,0.248,0.251])
])
hymenoptera_dataset = datasets.ImageFolder(root=r"F:李宏毅food-11traininglabeled",
transform=data_transform)
dataset_loader = torch.utils.data.DataLoader(hymenoptera_dataset,batch_size=4,shuffle=True)
'''测试代码'''
for image,label in dataset_loader:
print(image) #batch_size个的图像数据,4个三维图像数据
print(label) # 4个图像的label
2模型的搭建(卷王在卷中)


