猫狗数据集的制作并完成对猫狗预测识别

编程入门 行业动态 更新时间:2024-10-23 02:07:17

<a href=https://www.elefans.com/category/jswz/34/1769144.html style=猫狗数据集的制作并完成对猫狗预测识别"/>

猫狗数据集的制作并完成对猫狗预测识别

一、猫狗数据集的制作

#在数据集制作过程中需要加载的模块
import torch
import os
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
from torchvision.transforms import ToPILImage
from torch.utils.data import Dataset, DataLoader""" 
Pytorch中数据集被抽象为一个抽象类torch.utils.data.Dataset,所有的数据集都应该继承这个类,并override以下两项:.__len__.__getitem__
"""
class Datasets(Dataset):mean = [0.4878, 0.4545, 0.4168]std = [0.2623, 0.2555, 0.2577]def __init__(self,path):#获取数据集所在的路径,注意不能把该路径设置太深self.path = path#把数据集下的所有图片的文件名列出来,返回的结果是一个列表self.dataset = os.listdir(self.path)"""代表样本数量,len(obj)等价于obj.__len__()"""def __len__(self):return len(self.dataset)"""__getitem__返回一条数据或一个样本,obj[index]等价于obj.__getitem__"""def __getitem__(self,index):""":param item:index:return: data,target"""# 获得数据的标签name = self.dataset[index]# 数据集的文件名为i.j.jpeg, 这个标签的第i个位置如果是0表示猫,1则表示狗,第j个位置是图片的个数name_list = name.split(".")target =int(name_list[0])#这里需要注意tensor(target)和Tensor(target)的区别,在one-hot编码的时候可能会出错#a=[1,2,3]#torch.tensor(a)------[1,2,3]#torch.Tensor(a)------[1.,2.,3.]target = torch.tensor(target)"数据预处理"#打开图片(路径的拼接)img = Image.open(os.path.join(self.path,name))#归一化img = np.array(img) / 255#去均值img = (img - self.mean) / self.stddatasets = torch.tensor(img, dtype=torch.float32).permute(2, 0, 1)return datasets, target```python
"""数据预处理中方差和均值的求解:"""
if __name__ == '__main__':path = r"E:/cat-dog/datasets/"dataset = Datasets(path= path)# 制作加载器,batch_size=7264,相当于把整体的训练图片打包成了一个整体,data_loader包含两坨东西(data,target)data_loader = DataLoader(dataset= dataset, batch_size=7246, shuffle=True)# 将data_loader作为一个迭代器进行运算,这里面包含了输入数据和标签,所以后面取第0个位置的数,也就是取输入数据data = next

更多推荐

猫狗数据集的制作并完成对猫狗预测识别

本文发布于:2024-02-11 15:30:21,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1681749.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:猫狗   数据

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!