当前位置: 首页 > 知识库问答 >
问题:

如何对具有多个标签的数据集使用Pytorch数据加载器

司知
2023-03-14

我想知道如何在Pytorch中创建一个支持多种标签类型的数据加载器。我该怎么做?

共有1个答案

祝高超
2023-03-14

您可以为数据集中的每个项目返回标签的dict,DataLoader足够智能,可以为您整理标签。i、 e.如果为每个项目提供dict,数据加载器将返回dict,其中键为标签类型。访问该标签类型的键将返回该标签类型的校对张量。

见下文:

import torch
from torch.utils.data import Dataset, DataLoader
import numpy as np

class M(Dataset):
    def __init__(self):
        super().__init__()
        self.data = np.random.randn(20, 2)
        print(self.data)

    def __getitem__(self, i):
        return self.data[i], {'label_1':self.data[i], 'label_2':self.data[i]}

    def __len__(self):
        return len(self.data)

ds = M()
dl = DataLoader(ds, batch_size=6)

for x, y in dl:
    print(x, '\n', y)
    print(type(x), type(y))
[[-0.33029911  0.36632142]
 [-0.25303721 -0.11872778]
 [-0.35955625 -1.41633132]
 [ 1.28814629  0.38238357]
 [ 0.72908184 -0.09222787]
 [-0.01777293 -1.81824167]
 [-0.85346074 -1.0319562 ]
 [-0.4144832   0.12125039]
 [-1.29546792 -1.56314292]
 [ 1.22566887 -0.71523568]]
tensor([[-0.3303,  0.3663],
        [-0.2530, -0.1187],
        [-0.3596, -1.4163]], dtype=torch.float64) 
 {'item_1': tensor([[-0.3303,  0.3663],
        [-0.2530, -0.1187],
        [-0.3596, -1.4163]], dtype=torch.float64), 'item_2': tensor([[-0.3303,  0.3663],
        [-0.2530, -0.1187],
        [-0.3596, -1.4163]], dtype=torch.float64)}
<class 'torch.Tensor'> <class 'dict'>
...
 类似资料:
  • 我有多个数据集,每个数据集中有不同数量的图像(和不同的图像维度)。在训练循环中,我想从所有数据集中随机加载一批图像,但每个批次只包含单个数据集中的图像。例如,我有数据集A、B、C、D,每个数据集都有图像01。jpg,02。jpg,…n.jpg(其中n取决于数据集),假设批量大小为3。例如,在第一个加载的批次中,我可能会在下一个批次[D/01.jpg,D/05.jpg,D/12.jpg]中获得图像[

  • PyTorch包含一个名为的包,用于加载和准备数据集。它包括两个基本功能,即和,它们有助于数据集的转换和加载。 数据集 数据集用于从给定数据集读取和转换数据点。实现的基本语法如下所述 - 用于随机播放和批量处理数据。它可用于与多处理工作程序并行加载数据。 示例:加载CSV文件 使用Python包Panda来加载csv文件。原始文件具有以下格式:(图像名称,68个标记 - 每个标记具有,坐标)。

  • 对于在时间序列数据上实现PyTorch数据管道的“最佳实践”,我有点困惑。 我有一个HD5文件,我使用自定义DataLoader读取。似乎我应该返回数据样本作为一个(特征,目标)元组,每个元组的形状是(L,C),其中L是seq_len,C是通道数-即不要在数据加载器中预制批处理,只需返回一个表。 PyTorch模块似乎需要一个批处理暗淡,即。Conv1D期望(N,C,L)。 我的印象是,类将预先处

  • 我想知道使用连接到MongoDB的DataLoader是否是一件明智的事情,以及如何实现这一点。 出身背景 我在一个(本地)MongoDB中有大约2000万个文档。超过内存容量的文档太多了。我想在数据上训练一个深层次的神经网络。到目前为止,我一直在首先将数据导出到文件系统,子文件夹被命名为文档的类。但我觉得这种方法是荒谬的。如果数据库中的数据已经得到很好的维护,为什么要先导出(然后删除)。 问题1

  • 在本章中,将更多地关注及其各种类型。PyTorch包括以下数据集加载器 - MNIST COCO (字幕和检测) 数据集包括以下两种函数 - - 一种接收图像并返回标准内容的修改版本的函数。这些可以与变换一起组合。 - 获取目标并对其进行转换的函数。例如,接受标题字符串并返回索引张量。 MNIST 以下是MNIST数据集的示例代码 - 参数如下 - - 存在已处理数据的数据集的根目录。 - =训练

  • 校验者: @不吃曲奇的趣多多 @A @火星 @Trembleguy 翻译者: @cowboy @peels @t9UhoI @Sun 该 sklearn.datasets 包装在 Getting Started 部分中嵌入了介绍一些小型玩具的数据集。 为了在控制数据的统计特性(通常是特征的 correlation (相关性)和 informativeness (信息性))的同时评估数据集 (n_s