多卡训练系列1:sampler option is mutually exclusive with shuffle

关于Pytorch多卡训练中遇到的问题解决

具体问题报错:

Dataloader BUG ValueError: sampler option is mutually exclusive with shuffle

问题截图

image-20210601123516208

问题产生的代码

from torch.utils.data.dataloader import DataLoader
dataset_train = Dataset(opt.images_dir)
train_sampler = torch.utils.data.distributed.DistributedSampler(dataset_train)
dataloader = DataLoader(dataset=dataset_train,batch_size=opt.batch_size,shuffle = True,num_workers=opt.workers,pin_memory=True,drop_last=True,sampler=train_sampler)

问题产生的原因:

在设置samplertorch.utils.data.distributed.DistributedSampler类之后,依然设置Dataloadershuffle属性为True

在下面的源码解释中可以看出,如果sampler不为默认的None的时候,不用设置shuffle属性了

源码解释:

pytorchDataloader源码 参考链接

if sampler is not None and shuffle:
	raise ValueError('sampler option is mutually exclusive with shuffle')

源码补充

samplerNone的时候会根据shuffle属性设置不一样的采样器(代码想要达到的功能就是在sampler

设置为默认值的时候根据shuffle属性初始化sampler,在sampler不为None的时候,就直接已经初始化完毕了,有了具体的采样器属性,是否随机等属性是根据你定义的sampler里面定义的(正如这里的RandomSampler一样))

参考文献

python - ValueError: sampler option is mutually exclusive with shuffle pytorch - Stack Overflow

torch.utils.data.dataloader — PyTorch 1.8.1 documentation

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值