欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 锐评 > 「小土堆」pytorch DataSet

「小土堆」pytorch DataSet

2024/10/24 17:30:48 来源:https://blog.csdn.net/weixin_45814538/article/details/142680996  浏览:    关键词:「小土堆」pytorch DataSet

「小土堆」pytorch DataSet

from cProfile import labelfrom torch.utils.data import Dataset
from PIL import Image
import osclass MyData(Dataset):def __init__(self, root_dir, label_dir):# root_dir = "hymenoptera_data/train"# label_dir = "ants_img"# 这两个值是由后面的实例传递过来的self.root_dir = root_dirself.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, labeldef __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)数据集的工具,简单来说就是对数据集中的图片进行操作的一个简单的库。

 def __init__(self, root_dir, label_dir):# root_dir = "hymenoptera_data/train"# label_dir = "ants_img"# 这两个值是由后面的实例传递过来的self.root_dir = root_dirself.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路径下包含的文件夹或文件夹的名字的列表,重点是它返回的是一个列表,这个列表中包含了文件夹下面的文件的信息

    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, labeldef __len__(self):return len(self.img_path)

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com