当前位置:网站首页>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
如果需要自己定义的模型进行自制数据集训练,把定义的模型进行如下调用:
不同格式的是数据集的制作与加载可以见:
边栏推荐
- The mail server is listed in the blacklist. How to unblock it quickly?
- 2021-06-28
- 【分布式理论】(二)分布式存储
- 让保险更“保险”!麒麟信安一云多芯云桌面中标中国人寿, 助力金融保险信息技术创新发展
- First in China! Todesk integrates RTC technology into remote desktop, with clearer image quality and smoother operation
- 企业即时通讯软件是什么?它有哪些优势呢?
- Functions and usage of viewswitch
- On Apache Doris Fe processing query SQL source code analysis
- How to implement safety practice in software development stage
- 第3章业务功能开发(安全退出)
猜你喜欢
Functions and usage of tabhost tab
【TPM2.0原理及应用指南】 9、10、11章
How to choose the appropriate automated testing tools?
Functions and usage of serachview
Numberpick的功能和用法
Leetcode brush questions day49
【重新理解通信模型】Reactor 模式在 Redis 和 Kafka 中的应用
datepicket和timepicket,日期、时间选择器的功能和用法
【网络攻防原理与技术】第6章:特洛伊木马
第2章搭建CRM项目开发环境(数据库设计)
随机推荐
【信息安全法律法規】複習篇
Examen des lois et règlements sur la sécurité de l'information
Define menus using XML resource files
calendarview日历视图组件的功能和用法
鲲鹏开发者峰会2022 | 麒麟信安携手鲲鹏共筑计算产业新生态
DevOps 的运营和商业利益指南
Mrs offline data analysis: process OBS data through Flink job
麒麟信安云平台全新升级!
LeetCode 890(C#)
Sator launched Web3 game "satorspace" and launched hoobi
Siggraph 2022 best technical paper award comes out! Chen Baoquan team of Peking University was nominated for honorary nomination
redis主从、哨兵主备切换搭建一步一步图解实现
imageswitcher的功能和用法
The mail server is listed in the blacklist. How to unblock it quickly?
toast会在程序界面上显示一个简单的提示信息
Actionbar navigation bar learning
Function and usage of calendar view component
MySQL usage notes 1
【OKR目标管理】价值分析
Several best practices for managing VDI