当前位置:网站首页>Pytorch framework learning record 1 - Dataset class code combat
Pytorch framework learning record 1 - Dataset class code combat
2022-07-30 03:57:00 【Yuzu Roo】
Pytorch框架学习记录1——Dataset类代码实战
介绍
torch.utils.data.Dataset
是代表自定义数据集方法的抽象类,你可以自己定义你的数据类继承这个抽象类,非常简单,只需要定义__len__
和__getitem__
这两个方法就可以.- 通过
torch.utils.data.DataLoader
类来定义一个新的迭代器,用来将自定义的数据读取接口的输出或者PyTorch已有的数据读取接口的输入按照batch size封装成Tensor,后续只需要再包装成Variable即可作为模型的输入.
These two abstract classes are usedpython知识点
能够熟练的使用python语言的技巧,是理解pytorch源码的关键.在torch.utils.data.Dataset和torch.utils.data.DataLoader这两个类中会用到python抽象类的魔法方法,包括__len__(self),getitem(self)和__iter__(self)
__len__(self)
定义当被len()
函数调用时的行为(返回容器中元素的个数)__getitem__(self)
定义获取容器中指定元素的行为,相当于self[key]
,即允许类对象可以有索引操作.__iter__(self)
定义当迭代容器中的元素的行为
数据集下载地址:https://pan.baidu.com/s/1qNCOVz15mCSQEDZZXJAaoQ?pwd=qz2b
提取码:qz2b
1. 导入包
from torch.utils.data import Dataset
from PIL import Image
import os
2. 创建类
创建子类MyData,继承父类Dataset,and rewrite the function.
class MyData(Dataset):
def __init__(self, root_dir, label_dir):
self.root_dir = root_dir
self.label_dir = label_dir
self.path = os.path.join(self.root_dir, self.label_dir) # 路径拼接
self.img_path = os.listdir(self.path) # Get all the file names in the folder
def __getitem__(self, idx):
img_name = self.img_path[idx]
img_item_path = os.path.join(self.root_dir, self.img_path, img_name)
img = Image.open(img_item_path)
label = self.label_dir
return img, label
def __len__(self):
return len(self.img_path)
3. 调用
类进行实例化,并进行调用
root_dir = "C:\\Users\\hp\\PycharmProjects\\pythonProject\\Pytorch_Learning\\flower_data\\train"
daisy_label_dir = "daisy"
roses_label_dir = "roses"
daisy_dataset = MyData(root_dir, daisy_label_dir)
roses_dataset = MyData(root_dir, roses_label_dir)
train_dataset = daisy_dataset + roses_dataset
print("daisy:",len(daisy_dataset),"\nroses",len(roses_dataset),"\ndaisy+roses",len(train_dataset))
img, label = train_dataset[0]
img2, label = train_dataset[577]
img2.show()
边栏推荐
- 传统项目转型
- 弘玑再度入围Gartner 2022 RPA魔力象限并实现位置大幅跃升
- Taobao/Tmall get the list of sold product orders API
- Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Product (2) Mini Program Function
- Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Products (1) Development Overview
- OpenFeign implementation downgrade
- Let's learn the layout components of flutter together
- 写给技术人的管理入门知识1:什么是管理
- 【转】Swift 中的面向协议编程:引言
- Uptime Monitoring: How to Ensure Network Device Uptime
猜你喜欢
Nacos achieves high availability
Mini Program Graduation Works WeChat Points Mall Mini Program Graduation Design Finished Products (6) Question Opening and Defense PPT
Has been empty, a straightforward, continue to copy the top off!
一起来学习flutter 的布局组件
Pytorch框架学习记录7——卷积层
Gateway 路由网关
route filter
逆向分析实战2
Summary of Rpc and gRpc Introduction
Mini Program Graduation Works WeChat Second-hand Trading Mini Program Graduation Design Finished Works (3) Background Functions
随机推荐
CMake的安装和测试
Hystrix 服务熔断
小程序毕设作品之微信二手交易小程序毕业设计成品(7)中期检查报告
Operational configuration: How to run multiple EasyCVR programs as a service in one server?
逆向理论知识3【UI修改篇】
mysql 结构、索引详解
spicy(二)unit hooks
[ 云原生之谜 ] 云原生背景 && 定义 && 相关技术详解?
Tcp编程
redis分布式锁的原子保证
Uptime Monitoring: How to Ensure Network Device Uptime
小程序毕设作品之微信二手交易小程序毕业设计成品(3)后台功能
SDL播放器实战
EasyCVR启动时报错“no such file or directory”,该如何解决?
国内首家沉浸式高逼真元宇宙,希元宇宙正式上线
How to solve the error "no such file or directory" when EasyCVR starts?
Anti-shake and throttling
day10--install mysql on linux
LoadBalancer load balancing
AI智能安防视频平台EasyCVR如何配置音视频同时传输?