「小土堆」pytorch DataSet

「小土堆」pytorch DataSet

python 复制代码
from cProfile import label

from torch.utils.data import Dataset
from PIL import Image
import os

class MyData(Dataset):
    def __init__(self, root_dir, label_dir):

        # root_dir = "hymenoptera_data/train"
        # label_dir = "ants_img"
        # 这两个值是由后面的实例传递过来的
        self.root_dir = root_dir
        self.label_dir = label_dir

        # 将其整合
        self.path = os.path.join(root_dir, label_dir)

        # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
        self.img_name_path = os.listdir(self.path)

    def __getitem__(self, index):

        img_name = self.img_name_path[index]
        img_item_path = os.path.join(self.path, img_name)
        img = Image.open(img_item_path)

        label = self.label_dir
        # 返回的是图片和名字
        return img, label

    def __len__(self):
        return len(self.img_path)


ants_dataset = MyData('hymenoptera_data/train', 'ants_img')
# for item in ants_dataset.img_path:
#     print(item)
# print(ants_dataset.__len__())
# print(ants_dataset.__getitem__(0))


bees_dataset = MyData('hymenoptera_data/train', 'bees_img')
# print(bees_dataset.__len__())
# print(bees_dataset.__getitem__(0))
#
# print(len(ants_dataset+bees_dataset))

# ant_dataset中包含两个值,一个img一个label
img, label = ants_dataset[0]
img.show()

​ 视频中一开始是先写class的以至于一开始没有弄懂 'root_dir' 和 'label_dir' 是干什么的,在创建实例之后进行传参就可以很好的理解了,前者是指文件夹的路径,后者是文件夹下的分类,由于文件夹下面分别有两个类别的例子,所以分为root和label两类。

dataset提供了访问和处理大量自然语言处理(NLP)数据集的工具,简单来说就是对数据集中的图片进行操作的一个简单的库。

python 复制代码
 def __init__(self, root_dir, label_dir):

        # root_dir = "hymenoptera_data/train"
        # label_dir = "ants_img"
        # 这两个值是由后面的实例传递过来的
        self.root_dir = root_dir
        self.label_dir = label_dir

        # 将其整合
        self.path = os.path.join(root_dir, label_dir)

        # os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表。
        self.img_name_path = os.listdir(self.path)

​ 上述代码中从上到下来看,首先是MyData库,其继承了Dataset这个类,第一个函数就是对数据的初始化,可以理解成java中的构造器一样的功能。

​ os.path.join()此函数是将路径整合在一起赋值给self.path

​ os.listdir()此函数是返回self.path路径下包含的文件夹或文件夹的名字的列表,重点是它返回的是一个列表,这个列表中包含了文件夹下面的文件的信息

python 复制代码
    def __getitem__(self, index):

        img_name = self.img_name_path[index]
        img_item_path = os.path.join(self.path, img_name)
        img = Image.open(img_item_path)

        label = self.label_dir
        # 返回的是图片和名字
        return img, label

    def __len__(self):
        return len(self.img_path)

​ getitem这个函数的功能主要是对列表中的图片信息进行整合和赋值

相关推荐
reddingtons44 分钟前
Adobe Firefly AI驱动设计:实用技巧与创新思维路径
大数据·人工智能·adobe·illustrator·photoshop·premiere·indesign
CertiK1 小时前
IBW 2025: CertiK首席商务官出席,探讨AI与Web3融合带来的安全挑战
人工智能·安全·web3
Deepoch2 小时前
Deepoc 大模型在无人机行业应用效果的方法
人工智能·科技·ai·语言模型·无人机
Deepoch2 小时前
Deepoc 大模型:无人机行业的智能变革引擎
人工智能·科技·算法·ai·动态规划·无人机
kngines2 小时前
【字节跳动】数据挖掘面试题0003:有一个文件,每一行是一个数字,如何用 MapReduce 进行排序和求每个用户每个页面停留时间
人工智能·数据挖掘·mapreduce·面试题
Binary_ey2 小时前
AR衍射光波导设计遇瓶颈,OAS 光学软件来破局
人工智能·软件需求·光学软件·光波导
昵称是6硬币2 小时前
YOLOv11: AN OVERVIEW OF THE KEY ARCHITECTURAL ENHANCEMENTS目标检测论文精读(逐段解析)
图像处理·人工智能·深度学习·yolo·目标检测·计算机视觉
费弗里3 小时前
Python全栈应用开发利器Dash 3.x新版本介绍(1)
python·dash
平和男人杨争争3 小时前
机器学习2——贝叶斯理论下
人工智能·机器学习
静心问道3 小时前
XLSR-Wav2Vec2:用于语音识别的无监督跨语言表示学习
人工智能·学习·语音识别