如何更改 Pytorch 数据集的大小?

     2023-03-12     254

关键词:

【中文标题】如何更改 Pytorch 数据集的大小?【英文标题】:How do you alter the size of a Pytorch Dataset? [duplicate] 【发布时间】:2017-12-05 00:25:32 【问题描述】:

假设我正在从 torchvision.datasets.MNIST 加载 MNIST,但我只想加载 10000 张图像,我将如何对数据进行切片以将其限制为仅一些数据点?我知道 DataLoader 是一个生成器,可以生成指定批量大小的数据,但是如何对数据集进行切片呢?

tr = datasets.MNIST('../data', train=True, download=True, transform=transform)
te = datasets.MNIST('../data', train=False, transform=transform)
train_loader = DataLoader(tr, batch_size=args.batch_size, shuffle=True, num_workers=4, **kwargs)
test_loader = DataLoader(te, batch_size=args.batch_size, shuffle=True, num_workers=4, **kwargs)

【问题讨论】:

【参考方案1】:

您可以使用torch.utils.data.Subset(),例如对于前 10,000 个元素:

import torch.utils.data as data_utils

indices = torch.arange(10000)
tr_10k = data_utils.Subset(tr, indices)

【讨论】:

这个修改的是Dataset而不是DataLoader,很清晰。【参考方案2】:

另一种切片数据集的快速方法是使用torch.utils.data.random_split()(PyTorch v0.4.1+ 支持)。它有助于将数据集随机拆分为给定长度的非重叠新数据集。

所以我们可以有如下的东西:

tr = datasets.MNIST('../data', train=True, download=True, transform=transform)
te = datasets.MNIST('../data', train=False, transform=transform)

part_tr = torch.utils.data.random_split(tr, [tr_split_len, len(tr)-tr_split_len])[0]
part_te = torch.utils.data.random_split(te, [te_split_len, len(te)-te_split_len])[0]

train_loader = DataLoader(part_tr, batch_size=args.batch_size, shuffle=True, num_workers=4, **kwargs)
test_loader = DataLoader(part_te, batch_size=args.batch_size, shuffle=True, num_workers=4, **kwargs)

您可以在此处将tr_split_lente_split_len 分别设置为训练和测试数据集所需的分割长度。

【讨论】:

【参考方案3】:

请务必注意,当您创建 DataLoader 对象时,它不会立即加载您的所有数据(这对于大型数据集是不切实际的)。它为您提供了一个迭代器,您可以使用它来访问每个样本。

很遗憾,DataLoader 没有为您提供任何方法来控制您希望提取的样本数量。您将不得不使用切片迭代器的典型方法。

最简单的事情(没有任何库)是在达到所需的样本数量后停止。

nsamples = 10000
for i, image, label in enumerate(train_loader):
    if i > nsamples:
        break

    # Your training code here.

或者,您可以使用 itertools.islice 获取前 10k 个样本。像这样。

for image, label in itertools.islice(train_loader, stop=10000):

    # your training code here.

【讨论】:

此方法的警告:如果您在循环变量epoch 上多次迭代train_loader,您可能已经使用了所有样本进行训练...因为@987654329 DataLoader 中的 @ 选项将为每个 epoch 打乱样本。 我不断收到类似DataLoader worker (pid(s) 9579) exited unexpectedly 的错误(在 OSX 上)

获取 pytorch 数据集的子集

】获取pytorch数据集的子集【英文标题】:Takingsubsetsofapytorchdataset【发布时间】:2018-05-0601:01:05【问题描述】:我有一个网络,我想在一些数据集上进行训练(例如,CIFAR10)。我可以通过创建数据加载器对象trainset=torchvision.dataset... 查看详情

如何更改数据集的数据源?

】如何更改数据集的数据源?【英文标题】:HowcanIchangethedatasourceofadataset?【发布时间】:2011-11-1819:09:44【问题描述】:我目前正在使用VisualStudio2010中的C#开发Windows窗体应用程序。我已经使用数据源向导设置了一个数据集以连接... 查看详情

[基于pytorch的mnist识别02]用户数据集的读取(代码片段)

写在前面pytorch包含了很多包括mnist在内的开源数据集,但是如果要建立自己的神经网络的话肯定需要训练自己的数据集,那么如何利用pytorch加载用户自己的数据集呢?今天就来解决这个问题。今天的工作需要加载用... 查看详情

如何在 Google Bigquery 中创建动态更改数据集的查询?

】如何在GoogleBigquery中创建动态更改数据集的查询?【英文标题】:HowtocreateaquerywhichhasdynamiclychangeddatasetinGoogleBigQuery?【发布时间】:2020-06-2215:53:20【问题描述】:我需要创建一个查询来链接来自多个数据集的数据,每个月都会... 查看详情

Pytorch 中的标注:多目标数据集的不一致增强

】Pytorch中的标注:多目标数据集的不一致增强【英文标题】:AlbumentationsinPytorch:InconsistentAugmentationformulti-targetdatasets【发布时间】:2021-09-0312:46:06【问题描述】:我正在使用Pytorch,并希望使用Albumentations对我的图像进行数据增强... 查看详情

PyTorch 数据加载器显示字符串数据集的奇怪行为

】PyTorch数据加载器显示字符串数据集的奇怪行为【英文标题】:PyTorchdataloadershowsoddbehaviorwithstringdataset【发布时间】:2021-03-0104:26:38【问题描述】:我正在处理一个NLP问题并且正在使用PyTorch。由于某种原因,我的数据加载器返... 查看详情

如何计算 OLAP 多维数据集的可能大小

】如何计算OLAP多维数据集的可能大小【英文标题】:HowtocalculatethelikelysizeofanOLAPcube【发布时间】:2011-06-2015:36:03【问题描述】:有谁知道基于星型模式数据仓库获取OLAP多维数据集的粗略大小的方法。基于维度的数量、维度表中... 查看详情

如何在ggplot中更改不同数据集的线条颜色并具有图例

】如何在ggplot中更改不同数据集的线条颜色并具有图例【英文标题】:Howtochangecolorsoflinesofdifferentdatasetsinggplotandhavealegend【发布时间】:2021-12-2110:17:15【问题描述】:我想在同一个图中用两个不同数据集的图例制作一个图我第一... 查看详情

如何在 Pytorch 中测试自定义数据集?

】如何在Pytorch中测试自定义数据集?【英文标题】:HowdoyoutestacustomdatasetinPytorch?【发布时间】:2021-07-2107:09:54【问题描述】:我一直在关注Pytorch中使用来自Pytorch的数据集的教程,这些教程允许您启用是否要使用数据进行训练...... 查看详情

pytorch土堆pytorch教程学习torchvision中的数据集的使用(代码片段)

...据集。内置的数据集有CIFAR10、MNIST、COCO等,更多可进入pytorch官网查看。所有内置的数据集都继承了torch.utils.data.Dataset类,并且实现了__getitem__和__len__。所有的数据集几乎都有相似的API。下面以CIFAR10数据集的使用为例来认识下内... 查看详情

pytorch加载数据集

pytorch初学者,想加载自己的数据,了解了一下数据类型、维度等信息,方便以后加载其他数据。1torchvision.transforms实现数据预处理transforms.Totensor()操作必须要有,将数据转为张量格式。2torch.utils.data.Dataset实现数据读取要使用自... 查看详情

pytorch训练集的读取(代码片段)

pytorch读取训练集是非常便捷的,只需要使用到2个类:(1)torch.utils.data.Dataset(2)torch.utils.data.DataLoader常用数据集的读取1、torchvision.datasets的使用对于常用数据集,可以使用torchvision.datasets 查看详情

pytorch加载数据集的方式总结(代码片段)

Pytorch加载数据集的方式总结一、自己重写定义(Dataset、DataLoader)二、用Pytorch自带的类(ImageFolder、datasets、DataLoader)2.1加载自己的数据集2.1.1ImageFolder介绍2.2.2ImageFolder加载数据集完整例子2.2加载常见的数据集三... 查看详情

基于pytorch平台实现对mnist数据集的分类分析(前馈神经网络softmax)基础版(代码片段)

基于pytorch平台实现对MNIST数据集的分类分析(前馈神经网络、softmax)基础版文章目录基于pytorch平台实现对MNIST数据集的分类分析(前馈神经网络、softmax)基础版前言一、基于“前馈神经网络”模型,分类分析... 查看详情

如何使用 h5py 自动调整 HDF5 数据集的大小?

】如何使用h5py自动调整HDF5数据集的大小?【英文标题】:HowtoautomaticallyresizeanHDF5datasetwithh5py?【发布时间】:2021-09-2402:57:15【问题描述】:有没有办法让HDF5数据集从小尺寸开始,并在添加到其中时自动调整大小以适应越来越多... 查看详情

pytorch训练集的读取(代码片段)

pytorch读取训练集是非常便捷的,只需要使用到2个类:(1)torch.utils.data.Dataset(2)torch.utils.data.DataLoader常用数据集的读取1、torchvision.datasets的使用对于常用数据集,可以使用torchvision.datasets直接进行读... 查看详情

Python,类数据集,如何在pytorch中将图像与其各自的标签连接起来

】Python,类数据集,如何在pytorch中将图像与其各自的标签连接起来【英文标题】:Python,classdataset,howtoconcatenateimageswiththeirrespectivelabelsinpytorch【发布时间】:2020-10-0713:39:57【问题描述】:我是PyTorch的新手,在过去的几天里,我一... 查看详情

linq 更改结果集的值

...匿名类型-我已经阅读了几篇关于它的帖子,但我不知道如何解决它。我需要把好的从假变成真。这是我获取数据的地方:varRMA_stops_all=(fr 查看详情