问题标签 [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.

0 投票
2 回答
745 浏览

graphql - 我没有 GraphQL。不预加载如何解决N+1问题?

一个社区有很多家。每个家都归一个人所有。

假设我有这个 graphql 查询:

我可以预加载所有者,这将使数据请求成为单个 SQL 查询。美好的。

但是如果我不在graphql查询中请求所有者,数据仍然会被预加载。

如果我不预加载,数据要么在每个查询中获取,要么根本不获取,因为我没有在解析器中加载 belongs_to 关联。

我不确定这是否是一个已解决的问题,或者只是一个在使用 graphql 时必须接受的痛点。

顺便使用 Absinthe、DataLoader 和 Elixir。

0 投票
1 回答
3630 浏览

python-3.x - 在 Pytorch 中为 HDF5 文件创建数据集和数据加载器时遇到问题:没有足够的值来解包(预期 2,得到 1)

使用 Torchvision 的数据集后,我尝试在 Pytorch 中加载 HDF5 文件,但没有成功。我读到我应该定义自己的 Dataset 和 Dataloader 类,其中包含 getitem 以启用索引和 len 以返回数据集的长度。另外,我应该定义转换,因为 pytorch 的默认选项需要 PIL 图像。我尝试这样做,但我收到错误“ValueError:没有足够的值来解包(预期 2,得到 1)”我做错了什么?

0 投票
1 回答
48 浏览

deep-learning - pytorch ImageFolder 数据大小与原始 imgs 编号不匹配?

我在 train 文件夹中有 21,522 个项目,总计 609.7 MB

但是当我加载数据集时

不知何故

打印(len(train_dataset)) = 4109

不知何故,它不会加载整个图像文件

0 投票
1 回答
802 浏览

python - 当我有单独的长度数据集时,如何为 PyTorch Dataloader 定义 __len__ 方法?

我目前正在使用一个数据集类加载我的数据。在数据集中,我分别拆分了训练、测试和验证数据。例如:

为了便于阅读,许多细节被省略了。基本上,我读入一个大数据集并手动进行拆分。

我的问题是__len__当我的火车长度、有效数据和测试数据都不同时如何覆盖该方法?

我想这样做的原因是因为我想将拆分数据保留在一个类中,并且我还想为每个类创建单独的数据加载器,例如:

不适合self.testand self.valid

也许我从根本上误解了 Dataloader,但我应该如何解决这个问题?提前致谢。

0 投票
0 回答
20 浏览

pytorch - subrandomsapler 数据加载器 pytorch 长度似乎不正确

我得到了 train_idx 和 valid_idx 的 48000 和 12000 索引,
然后我将此数字应用于数据加载器

打印(len(train_loader.dataset),len(valid_loader.dataset))
60000 60000

但 len 似乎不对

0 投票
1 回答
469 浏览

graphql - GraphQL - 上下文是否传播到下游解析器?

如果您将修改后的上下文传递给 GraphQL 解析器,这是否会传播到所有下游解析器?这是在 GraphQL 规范中指定的还是特定于实现的?

为了澄清一个例子说我有一个像下面这样的查询

假设我从contextA进入companies查询开始,然后我CompanyResolvers得到了我的位置superSpecialContext并将其传递给employees数据加载器

当我到达positions解析器时,我现在是在使用superSpecialContext原版还是原版contextA(我实际上更喜欢这种情况)?

0 投票
0 回答
135 浏览

python - 如何在每次训练中以相同的顺序处理来自加载器的数据集

我想知道如何处理我在数据加载器中的索引,每次训练时总是以相同的顺序。我想这样做是因为我的代码需要花费大量时间来保存验证集上结果的视觉输出,所以我决定只保存验证集上看到的 N 个第一个示例。

但是,当我在验证循环中传递所有批次时:

例如,我的值indices在第一次迭代时并不总是相同的。我确信验证集的索引始终相同,因为我检查了 atdataset['loader_val'].sampler.indices始终是相同的数组并以相同的方式排序。有没有办法enumerate()以相同的方式始终采用内部索引dataset['loader_val']

0 投票
0 回答
140 浏览

python - 构建从 3D 图像加载(未知数量)切片的 PyTorch 数据集的好方法是什么?

我正在尝试构建一个 PyTorch 数据集,它21x512x512从 shape 的 3D 图像返回切片?x512x512。我知道有多少张图像,但我不知道每张图像中有多少个切片。因此,我会直观地让__len__()Dataset 的函数返回我拥有的图像总数。我可以事先在技术上检查所有图像的形状,但数据集可能会随着时间而改变,所以我更喜欢可扩展的软件解决方案。

有了这个,我需要一些功能将图像分成切片(上面提到的大小),并返回这些而不是整个图像。这也不是问题,我有一个功能可以做到这一点。

问题来了。如果我在 Dataset 的函数中添加这个切片功能__getitem__(),那么我将只能得到每个图像一个切片,因为 PyTorch DataLoader 会认为有len(dataset)数据点,现在情况不再如此。但我也无法指定正确的样本数量,因为我事先并不知道。

我尝试了一些解决方案:

  1. 返回一个生成器函数,__getitem__()其中每个图像产生切片。这不起作用,因为__getitem__()需要返回类型list,tuple等的东西tensor
  2. 只需返回整个图像并在训练循环中将其分解。这可以工作,但既不好的编程风格(因为我想隐藏数据集中的数据选择)并且与 DataLoader 的批处理不太兼容,因为一个图像可能有 100 个切片,而另一个可能只有 5 个切片. 在这种情况下,从这些图像制作批次将导致只有 5 个批次具有实际的batch_size,而其他 95 个批次的样本较少。解决这个问题需要进行一些难看的检查,看看是否需要加载另一个图像,我想再次将其隐藏在数据集中。
  3. Yield 会导致Dataset 函数出现for循环。__getitem__()这与第 1 点的原因不同:无法在数据集中返回生成器。

简而言之,什么是从 PyTorch 数据集中的 3D 图像加载未知数量切片的干净方法?

0 投票
2 回答
5382 浏览

pytorch - Pytorch DataLoader 迭代顺序稳定吗?

Pytorch Dataloader 的迭代顺序是否保证相同(在温和条件下)?

例如:

到目前为止,我已经尝试过测试它,它似乎没有被修复,两次运行的顺序相同。有没有办法使订单相同?谢谢

编辑:我也试过做

然后遍历数据加载器两次,但结果相同的不确定性。

0 投票
1 回答
254 浏览

deep-learning - pytorch Crossentropy 导致无法匹配的批量大小

我正在使用数据加载器加载图像文件夹

图像文件夹由三个类别(标签)组成,即

'/root/ant/dsd.png'

'/root/ant/sfds.png'

...

……

'/root/bee/dsf.png'

……

..

'/根/乳清/sfd.png'

这里有 ant,bee,whey 三个类

通过执行上面的代码,我得到了一个错误,即输出和目标的大小不匹配

错误:预期输入 batch_size (3) 与目标 batch_size (1) 匹配。

我认为错误可能出在 trainloader 中,因为提取了不同形状不匹配的标签

提前感谢您解决