有没有一种方法可以将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', ...]等
请看一下我已经在Stack Overflow上问过的关于隐式对的随机数组的这个question,你可以理解我的意思
例如:如果这是一个列表
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上实现同样的效果
主要思想是,我想在连续帧上训练我的网络,但它不一定是完整的序列,但至少我需要每个步骤,有两个序列
发布于 2018-09-05 20:01:26
我认为您正在寻找data.Sampler:您可以提供您自己的“采样器”,即来自您的Dataset的示例,而不是data.DataLoader的完全随机缺省随机置乱。
查看data.DataLoader的输入参数
samples (
Sampler,可选)-定义从数据集中提取样本的策略。如果指定,则shuffle必须为False。
我认为一个很好的起点是看一下data.SubsetRandomSampler的代码。
https://stackoverflow.com/questions/52183001
复制相似问题