当前位置:网站首页>Pytorch中自制数据集进行Dataset重写
Pytorch中自制数据集进行Dataset重写
2022-07-07 15:40:00 【AI炮灰】
通过上一篇博文,我们可以获得一下文件的数据如下所示:

所以自制数据集的流程如下:
(1)生成csv或者txt文件
见我上一篇博客:深度学习-制作自己的数据集_AI炮灰的博客-CSDN博客
(2)重写Dataset
(3)生成DataLoader()
(4)迭代数据
(2)(3)(4)步完整代码如下所示;
import pandas as pd
from torch.utils.data import Dataset, DataLoader, random_split
from torchvision import transforms
import cv2 as cv
class diff_motion_dataset(Dataset):
def __init__(self, dataset_dir, csv_path, resize_shape): # 初始化以后该初始化函数会自行调用
# init方法一般要编写数据的transformer、数据的基本参数
self.dataset_dir = dataset_dir
self.csv_path = csv_path
self.shape = resize_shape
# 读取我们生成的csv文件
self.df = pd.read_csv(self.csv_path, encoding='utf-8')
self.transformer = transforms.Compose([
transforms.Resize(self.shape),
transforms.ToTensor(), # 把PIL核np.array格式的图像转化为Tensor
])
def __len__(self): # 返回数据规模
return len(self.df)
def __getitem__(self, idx): # getitem, idx = index 就是数据样本的下标.特别提醒下面要先把列filename和label取出来再进行idx顺序读取不然就会报错
x_train = cv.imread(self.df['filepath'][idx]) # 读取idx行,filename列的数据(也即是所有图像),然后传入到transformer里面,它会对图像进行resize和toTensor
y_train = self.df['label'][idx] # traindataLoader后面会自动把label转化为tensor
return x_train, y_train # 返回的是单条数据不是df里面的所有数据
data_ds = diff_motion_dataset("F:/reshape_images", "F:/reshape_images/motion_data.csv", (256, 256))
# print(len(data_ds))
# 数据划分
num_sample = len(data_ds)
train_percent = 0.8
train_num = int(train_percent*num_sample)
test_num = num_sample - train_num
train_ds, test_ds = random_split(data_ds, [train_num, test_num])
# print(len(train_ds))
# 3.生成DataLoader().使得数据可以迭代,其次可以将数据分成许多的batch以及shuffer、nun_worker多线程
train_dl = DataLoader(train_ds, batch_size=4, shuffle=True)
test_dl = DataLoader(test_ds, batch_size=4, shuffle=True)
# # 迭代数据
for x_train, y_train in iter(train_dl):
print(x_train.shape)
print(y_train.shape)
break
如果需要自己定义的模型进行自制数据集训练,把定义的模型进行如下调用:

不同格式的是数据集的制作与加载可以见:
边栏推荐
- 【可信计算】第十三次课:TPM扩展授权与密钥管理
- 专精特新软件开发类企业实力指数发布,麒麟信安荣誉登榜
- Flash build API service
- [re understand the communication model] the application of reactor mode in redis and Kafka
- [video / audio data processing] Shanghai daoning brings you elecard download, trial and tutorial
- The top of slashdata developer tool is up to you!!!
- 第1章CRM核心业务介绍
- What is cloud computing?
- textSwitch文本切换器的功能和用法
- 【网络攻防原理与技术】第1章:绪论
猜你喜欢

【TPM2.0原理及应用指南】 9、10、11章

Create dialog style windows with popupwindow

redis主从、哨兵主备切换搭建一步一步图解实现

toast会在程序界面上显示一个简单的提示信息

【重新理解通信模型】Reactor 模式在 Redis 和 Kafka 中的应用

第3章业务功能开发(用户访问项目)

使用popupwindow創建对话框风格的窗口

策略模式 - Unity

状态模式 - Unity(有限状态机)

Siggraph 2022 best technical paper award comes out! Chen Baoquan team of Peking University was nominated for honorary nomination
随机推荐
Please insert the disk into "U disk (H)" & unable to access the disk structure is damaged and cannot be read
ViewSwitcher的功能和用法
Repair method of firewall system crash and file loss, material cost 0 yuan
[fan Tan] those stories that seem to be thinking of the company but are actually very selfish (I: building wheels)
MySQL usage notes 1
麒麟信安云平台全新升级!
百度地图自定义样式向右拖拽导致全球地图经度0度无法正常显示
【OKR目标管理】价值分析
企业即时通讯软件是什么?它有哪些优势呢?
Problems encountered in Jenkins' release of H5 developed by uniapp
Audio Device Strategy 音频设备输出、输入 选择 基于7.0 代码
A tour of grpc:03 - proto serialization / deserialization
The mail server is listed in the blacklist. How to unblock it quickly?
【饭谈】如何设计好一款测试平台?
阿富汗临时政府安全部队对极端组织“伊斯兰国”一处藏匿点展开军事行动
【TPM2.0原理及应用指南】 12、13、14章
VSCode关于C语言的3个配置文件
【信息安全法律法规】复习篇
第1章CRM核心业务介绍
Several best practices for managing VDI