【发布时间】:2020-08-30 12:16:45
【问题描述】:
我正在尝试更改this code,因此142 行中的函数sample_real_video_batch 中的迭代器将从特定的批号开始(而不是数据集的开始)。
这是函数:
def sample_real_video_batch(self):
if self.video_enumerator is None:
self.video_enumerator = enumerate(self.video_sampler)
batch_idx, batch = next(self.video_enumerator)
b = batch
if self.use_cuda:
for k, v in batch.iteritems():
b[k] = v.cuda()
if batch_idx == len(self.video_sampler) - 1:
self.video_enumerator = enumerate(self.video_sampler)
return b
一个明显且非常低效的方法是在循环中调用函数n 次。但一般来说,有没有一种有效的方法可以从 python 中的特定索引启动迭代器?
它是否适用于pytorch ImageDataset?
【问题讨论】:
-
请将您的代码作为 text 发布在这里。您和我们复制粘贴比照片/代码链接更容易;更重要的是,没有死链接的风险。
-
@Austin 感谢您的评论,我已添加代码。
-
你不想传入索引并切片
self.video_sampler吗? -
@Austin
self.video_sampler是torch.utils.data.Dataset的子类的一个实例。我不确定如何对数据集对象进行切片。 -
您可以使用
itertools.islice从迭代器中消耗特定数量的元素。