热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用自己数据集来训练神经网络pytorch,重写Dataset类

很多小伙伴在刚刚结束深度学习算法的时候,肯定想用自己的数据来进行训练网络,但是不知到怎么写代码,下面这个代码就会为你解惑,自

很多小伙伴在刚刚结束深度学习算法的时候,肯定想用自己的数据来进行训练网络,但是不知到怎么写代码,下面这个代码就会为你解惑,自己可以根据实际情况来更改代码,训练自己的图片数据集。

下面我用蚂蚁和蜜蜂数据集为例,我的数据格式是这样的,如下图:

 每个类别都会有相应的图片


from torch.utils.data import Dataset,DataLoader
import os
import torch
import numpy as np
from PIL import Image
from torchvision import transforms
transform = transforms.Compose([transforms.Resize([500, 500]), # 图像预处理transforms.RandomHorizontalFlip(),transforms.ToTensor(),transforms.Normalize(mean=[.5, .5, .5], std=[.5, .5, .5])])
class_list={0:"ants",1:"bees"}#用于后续预测的时候可以使用,用预测到的标签来直接获取相应的类别
class Mydataset(Dataset):def __init__(self,file_path="D:/PycharmProjects/pythonProject/classification-pytorch-main1/datasets",formate="train",transform=False):self.transforms=transformself.file_path=file_pathself.formate=formateself.file_train=os.path.join(self.file_path,self.formate)print(self.file_train)files_class = os.listdir(self.file_train)self.imgs=[]for i, j in enumerate(files_class):data = os.path.join(self.file_train, j)print(data)data_1 = os.listdir(data)data_all = [[os.path.join(data, k), i] for k in data_1]self.imgs += data_allprint(self.imgs)def __len__(self):return len(self.imgs)def __getitem__(self, index):img_path, label = self.imgs[index] # 选择文件路径pil_img = Image.open(img_path).convert('RGB') # 利用PIL打开文件路径if self.transforms:img=transform(pil_img)else:pil_img = np.asarray(pil_img)img = torch.from_numpy(pil_img)return img, labelif __name__ == '__main__':train_data= Mydataset(transform=True)print(train_data.__getitem__(0)[0])print(train_data.__getitem__(0)[1])#验证能否传进模型中train_dataloder=DataLoader(train_data,batch_size=8,shuffle=True)for data in train_dataloder:print(data[0].shape)print(data[1])#结果不唯一,其中的结果如下:# torch.Size([8, 3, 500, 500])# tensor([1, 0, 0, 1, 1, 0, 1, 1])break

如果觉得有帮助,就点个赞吧,祝大家学业有成!


推荐阅读
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
author-avatar
ReMadrism_FaithlU9D_1990
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有