问题标签 [pytorch-dataloader]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - PyTorch 数据集/数据加载器批处理
对于在时间序列数据上实现 PyTorch 数据管道的“最佳实践”,我有点困惑。
我有一个使用自定义 DataLoader 读取的 HD5 文件。似乎我应该将数据样本作为(特征,目标)元组返回,每个元组的形状都是(L,C),其中 L 是 seq_len,C 是通道数 - 即不要在数据加载器中进行批处理,只是作为一张桌子返回。
PyTorch 模块似乎需要批量调暗,即 Conv1D 需要 (N, C, L)。
我的印象是DataLoader
该类会预先设置批处理维度,但事实并非如此,我正在获取数据形状(N,L)。
在上面的代码中,x 的形状是 (N,C) 而不是 (1,N,C),这导致下面的代码(来自公共 git 存储库)在第一行失败。
文档状态启用自动批处理时 它总是预先添加一个新维度作为批处理维度,这让我相信自动批处理被禁用但我不明白为什么?
python - 将外部定义的函数导入 pytorch 数据集
我有以下问题。我正在为我的 pytorch 数据加载器定义一个数据集类。在课堂上,我想在__getitem__
方法中使用外部定义的函数。
这是我的意思的例子
标有#的行!!!将不起作用,因为该函数是在此 Dataset 对象之外定义的。我收到以下错误
如果我在 Dataset 对象中定义了这个函数(就像我为listUniqueExamples
函数所做的那样),那么它就会起作用。但是,在这种确切的情况下,我希望这个函数是外部的。
有什么方法可以将外部函数导入pytorch中的Dataset类?
先感谢您!
pytorch - PyTorch / SpykeTorch 中的 DataLouder:转换数据提取的问题
同事们,我在 PyTorch 和 SpykeTorch(基于 PyTorch)中使用神经网络,我需要创建图像数据集并将它们放在 DataLouders 中以进行进一步处理。完整过程如下:
1.生成张量,
2.使用torchvision.transforms.ToPILImage()对其进行变换,
3.将创建的图像保存到一个目录,
4.基于具有图像变换的目录创建一个ImageFolder(使用过滤器) ,
5. 从 ImageFolder 创建 DataLoader。
此外,来自 DataLoader 的数据用于工作(例如,它被神经网络识别)。
问题是,从DataLoader拉取数据和标签时,出现错误:
从维度 [1, 2, 7, 7] 来看,错误发生在第 4 阶段,其中使用一组过滤器进行转换。
但是,在这种情况下使用不同的过滤器集不会导致任何错误。
如何在不更换过滤器的情况下解决问题?
python - 优化 pytorch 数据加载器以读取全高清图像中的小补丁
我正在使用 PyTorch 框架训练我的神经网络。数据是全高清图像 (1920x1080)。但是在每次迭代中,我只需要从这些图像中裁剪出一个随机的 256x256 补丁。我的网络相对较小(5 个卷积层),因此瓶颈是由加载数据引起的。我在下面提供了我当前的代码。有什么方法可以优化加载数据并加快训练速度?
代码:
最后,我正在创建一个 DataLoader,如下所示:
到目前为止我已经尝试过:
- 我已经搜索是否可以读取图像的一部分。不幸的是,我没有得到任何线索。看起来 python 库读取了完整的图像。
- 我计划从单个图像中读取更多补丁,以便我需要读取更少的图像。但在 PyTorch 框架中,
get_item()
函数必须返回单个样本,而不是批次。所以,在每个get_item()
我只能读取一个补丁。 - 我计划通过以下方式规避此问题:读取 4 个补丁
get_item()
并返回形状补丁(4,3,256,256)
而不是(3,256,256)
. 稍后当我使用数据加载器读取批次时,我会得到一批形状(BS,4,3,256,256)
而不是(BS,3,256,256)
. 然后我可以连接数据dim=1
以转换(BS,4,3,256,256)
为(BS*4,3,256,256)
. 因此,我可以将batch_size
(BS
) 减少 4,并希望这会将数据加载速度提高 4 倍。
还有其他选择吗?我愿意接受各种建议。谢谢!
python - (AttributeError: 'NoneType' object has no attribute '__array_interface__') 错误是什么意思?
我正在尝试构建一个 ML 模型来检测卡通图像面上的地标。当我将图像数据集拆分为训练集和验证集时,出现以下错误。这里我使用 pytorch 来构建模型。那么这个错误是什么意思呢?
这就是我拆分数据集的方式。
这是我得到的错误。
pytorch - 如何从 torchtext.data.dataset.Dataset 中获取文本
如何从 PyTorch Dataset(<torchtext.data.dataset.Dataset>) Object 获取训练数据作为文本(或文本列表)?
或者更具体地说,来自 torchtext.datasets.IMDB
例如来自torchtext.datasets (IMDB)
假设我在文档中完成了所有步骤,直到这里,我如何才能将 Dataset Object 中的第一个文本train
作为元组以(“review”,分类)的形式获取:
pytorch - JIT Pytorch 中的整理功能
我需要创建一个 DataLoader,其中 collator 函数需要进行非平凡的计算,实际上是一个双层循环,它显着减慢了训练过程。例如,考虑这个玩具代码,我尝试使用 numba 对 collate 函数进行 JIT:
然后我按如下方式创建 DataLoader:
然而,这只是卡住了,但如果我删除_collate_fn
. 我无法理解这里发生了什么。我不必坚持 numba 并且可以使用任何可以帮助我克服 Python 中循环效率低下的东西。TIA 和快乐 12,021。
python - 如何使用火炬视觉在 Google Colab 上加载 CelebA 数据集,而不会耗尽内存?
我正在关注关于DCGAN的教程。每当我尝试加载 CelebA 数据集时,torchvision 都会耗尽我所有的运行时内存(12GB)并且运行时崩溃。我正在寻找如何在不占用运行时资源的情况下加载和应用转换到数据集的方法。
重现
这是导致问题的代码部分。
完整的笔记本可以在这里找到
环境
PyTorch 版本:1.7.1+cu101
是否调试构建:False
CUDA 用于构建 PyTorch:10.1
ROCM 用于构建 PyTorch:不适用
操作系统:Ubuntu 18.04.5 LTS (x86_64)
GCC版本:(Ubuntu 7.5.0-3ubuntu1~18.04)7.5.0
Clang 版本:6.0.0-1ubuntu2 (tags/RELEASE_600/final)
CMake 版本:3.12.0 版
Python 版本:3.6(64 位运行时)
CUDA 是否可用:真
CUDA 运行时版本:10.1.243
GPU 型号和配置: GPU 0:Tesla T4
英伟达驱动版本:418.67
cuDNN 版本:/usr/lib/x86_64-linux-gnu/libcudnn.so.7.6.5
HIP 运行时版本:不适用
MIOpen 运行时版本:不适用
相关库的版本:
- [pip3] numpy==1.19.4
- [pip3] 火炬==1.7.1+cu101
- [pip3] 火炬音频==0.7.2
- pip3] 火炬总结==1.5.1
- [pip3] 火炬文本==0.3.1
- [pip3] 火炬视觉==0.8.2+cu101
- [conda] 无法收集
附加上下文
我尝试过的一些事情是:
- 在单独的行上下载和加载数据集。例如:
- 使用
ImageFolder
数据集类而不是CelebA
类。例如:
在这两种情况下,内存问题仍然存在。
pytorch - 使用 Pytorch 显示每个类的图像数量
我正在将 Pytorch 与 FashionMNIST 数据集一起使用,我想从 10 个类中的每一个中显示 8 个图像样本。但是,我不知道如何将训练测试拆分为 train_labels,因为我需要在标签(类)上循环并打印每个类的 8 个。知道我怎么能做到这一点吗?