【问题标题】:DataLoader - shuffle implicit pairsDataLoader - 洗牌隐式对
【发布时间】:2019-02-10 11:21:53
【问题描述】:

有没有办法将DataLoader 作为列表处理?这个想法是我想洗牌隐含的图像对,而不将洗牌设置为 True

基本上,例如,我有 10 个场景,每个场景包含 100 个序列,因此它们在目录中表示为

'1_1.png', '1_2.png', '1_3.png', '....., '2_1.png', '2_2.png', '2_3.png', ...., '3_1.png', '3_2.png', '3_3.png', ..., ...., '10_1.png', '10_2.png', '10_3.png', ...

我不想要数据的完全洗牌,我想要的只是洗牌但保持对,所以它们在数据加载器中表示为

[ '1_3.png', '1_4.png', '2_2.png', '2_3.png', '10_1.png', '10_2.png', '1_2.png', '1_3.png', ...] 等等

请看一下这个question,我已经在Stack Overflow 上询问过关于隐式对的洗牌数组,在那里你可以理解我的意思

例如: 如果这是一个列表

L = [['1_1'],['1_2'],['1_3'],['1_4'],['1_5'],['1_6'],['2_1'],['2_2'],['2_3'],['2_4'],['2_5'],['2_6'],['3_1'],['3_2'],['3_3'],['3_4'],['3_5'],['3_6']]

那么这是输出

[['1_2'], ['1_3'], ['2_1'], ['2_2'], ['2_4'], ['2_5'],
 ['2_2'], ['2_3'], ['1_3'], ['1_4'], ['3_4'], ['3_5'],
 ['3_3'], ['3_4'], ['3_2'], ['3_3'], ['1_6'], ['2_1'],
 ['2_5'], ['2_6'], ['2_6'], ['3_1'], ['1_4'], ['1_5'],
 ['1_1'], ['1_2'], ['2_3'], ['2_4'], ['1_5'], ['1_6'],
 ['3_1'], ['3_2'], ['3_5'], ['3_6']]

我想为 DataLoader 实现相同的目标

主要思想是我想在连续帧上训练我的网络,但不一定是完整的序列,但至少我需要每一步,有两个序列

【问题讨论】:

    标签: image-processing machine-learning deep-learning computer-vision pytorch


    【解决方案1】:

    我认为您正在寻找data.Sampler:而不是data.DataLoader 的完全随机默认随机播放,您可以提供自己的“采样器”,从您的Dataset 中采样示例。
    查看data.DataLoader的输入参数:

    samplerSampler,可选)——定义抽取样本的策略 从数据集中。如果指定,shuffle 必须是 False

    我认为一个很好的起点是太看data.SubsetRandomSampler的代码。

    【讨论】:

    • data.SubsetRandomSampler 获取给定的索引并给出位于这些索引中的样本,我看不出这与我想要的有什么关系,如果可能的话,你能举个例子吗?
    • @MostafaHussein 我认为您应该实施一个适合您特定需求的自己的data.Sampler。我还认为使用data.SubsetRandomSampler 的代码作为参考可以帮助您实现自己的采样器。
    猜你喜欢
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-11-02
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-26
    相关资源
    最近更新 更多