Dataset类实践

news/2024/11/23 1:34:58/

Dataset类实践
蚂蚁蜜蜂分类数据集和下载链接https://download.pytorch.org/tutorial/hymenoptera_data.zip

Dataset:提供一种方式去获取数据及其lable

  • Q:如何获取每个数据及其lable

    重写构造方法和获取标签方法

  • Q:告诉我们总共有多少数据

    重写len方法

代码示例:

from torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset):def __init__(self, root_dir, label_dir):  # 获取所有图片的地址self.root_dir = root_dir  # self设置成全局变量self.label_dir = label_dirself.path = os.path.join(self.root_dir, self.label_dir)self.img_path = os.listdir(self.path)def __getitem__(self, idx):  # 获取图片及其标签img_name = self.img_path[idx]  # 获取文件名称img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)  # 文件绝对路径img = Image.open(img_item_path)  # 获取文件详细信息label = self.label_dir  # 获取标签return img, label	# 返回图片和标签def __len__(self):return len(self.img_path)# 创建示例测试root_dir = "hymenoptera_data/train"
ants_label_dir = "ants"
bees_label_dir = "bees"
ants_dataset = MyData(root_dir, ants_label_dir)  # 获取蚂蚁的数据集
bees_dataset = MyData(root_dir, ants_label_dir)  # 获取蜜蜂的数据集#获取整个train数据集
train_dataset = ants_dataset + bees_dataset

在控制台中进行测试

  • 对数据集中图片的相关操作

在这里插入图片描述

获取蚂蚁数据集

在这里插入图片描述

在这里插入图片描述

  • 查找当前数据集中第一个图片名称

在这里插入图片描述

  • 图片名称拼接(进行路径和标签的拼接)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  • 读取图片相应信息

在这里插入图片描述

在这里插入图片描述

实例化对象

在这里插入图片描述

在这里插入图片描述

  • 返回该对象 image和label

在这里插入图片描述
在这里插入图片描述

  • 结果

在这里插入图片描述

  • 改变ants_dataset[],展示第二张图
    在这里插入图片描述

在这里插入图片描述

获取蜜蜂的数据集

在这里插入图片描述

获取整个train数据集(蚂蚁+蜜蜂)

train_dataset = ants_dataset + bees_dataset

在这里插入图片描述

# 进行长度测试
len(train_dataset)
248
len(ants_dataset)
124
len(bees_dataset)
124

http://www.ppmy.cn/news/1064571.html

相关文章

【LeetCode-面试经典150题-day14】

目录 19.删除链表的倒数第N个结点 82.删除排序链表中的重复元素Ⅱ 61. 旋转链表 86.分隔链表 146.LRU缓存 19.删除链表的倒数第N个结点 题意: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 【输入样例】head [1,2,3,4,5…

android 下载网络文件

工具类 import android.app.ProgressDialog; import android.content.Context; import android.os.AsyncTask; import android.os.Environment; import android.util.Log;import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import …

C++动态库编程 | C++名称改编、标准C接口、extern “C”、函数调用约定以及def文件详解

目录 1、导入导出声明 2、C函数名称改编与extern "C" 3、函数调用约定与跨语言调用 3.1、函数调用约定 3.2、跨语言调用dll库接口 3.3、函数调用约定以哪个为准 4、def文件的使用 5、在C程序中引用ffmpeg库中的头文件链接报错问题 6、最后 VC常用功能开发汇…

[LitCTF 2023]Flag点击就送!

进入环境后是一个输入框,可以提交名字 然后就可以点击获取flag,结果回显提示,需要获取管理员 可以尝试将名字改为admin 触发报错,说明可能存在其他的验证是否为管理员的方式 通过抓包后,在cookie字段发现了 特殊的东西…

C++中的Pimpl和RAII惯用法

一、PImpl 惯用法 PImpl(Pointer to implementation)是一种比较常见的C编程技巧,采用这种技巧能够减少代码依赖以及编译时间,具体思想是:将类的实现细节(如一些非虚的私有成员)从对象的表示中移…

如何在windows下使用masm和link对汇编文件进行编译

前言 32位系统带有debug程序,可以进行汇编语言和exe的调试。但真正的汇编编程是“编辑汇编程序文件(.asm)->编译生成obj文件->链接生成exe文件”。下面,我就来说一下如何在windows下使用masm调试,使用link链接。 1、下载相应软件 下载…

vue 孙组件给爷组件传递数据,本质层层传递

1 子传父 例子 vue 子组件 emit传递事件和事件数据给父组件_tenc1239的博客-CSDN博客 2 子传父 父传爷 层层套娃1中例子 2.1 定义传递事件 传值data // 孙组件 methods: {sendDataToGrandpa() {const data hello;this.$emit(sendDataToGrandpa, data);} } 2.2 中间父组件…

【CSS】定位 ( 子元素绝对定位 父元素相对定位 | 代码示例 )

一、子元素绝对定位 父元素相对定位 绝对定位 要和 带有定位 的 父容器 搭配使用 ; 子元素 使用绝对定位 , 父元素要使用 相对定位 ; 子元素使用 绝对定位 , 在布局中不会保留其位置 , 子元素完全依赖 父容器 的位置 , 此时就要求父容器必须稳定 , 如果父容器使用了 绝对布…