Expected a ‘cuda‘ device type for generator but found ‘cpu‘的解决方法

Expected a ‘cuda’ device type for generator but found 'cpu’的解决方法

在调试一个小样本学习的代码是遇到这样一个问题:

RuntimeError: Expected a 'cuda' device type for generator but found 'cpu'

在网上查找了好久,总结起来有如下的4种解决方案:
1.使用的1.9版本的pytorch太高了,换成pytorch1.8之后就行了。这种方法据说可行,但我没有亲自试过(感觉太麻烦)

2.如果你的代码在先前使用了torch.set_default_tensor_type()来设置tensor的类型,这个时候如果你的dataset的长度超过了30000,就会报出此错误。因此可以将先前的torch.set_default_tensor_type()语句进行注释即可

3.将Dataloder中的shuffle=True改成shuffle=Flase,但这种方法我试过可行,不会报错,但由于取消了对数据的打乱,可能会对训练造成不利影响

4.紧接着https://github.com/dbolya/yolact/issues/664我在这个里边找到了许多的方法有关这个问题的处理方法,其中下边这中解决方法解决了这个问题:
在这里插入图片描述
具体代码如下:

// An highlighted block
#原来的代码
loader = DataLoader(dataset, batch_size=num_classes, shuffle=True)
#添加generator=torch.Generator(device='cuda')改成如下结果:
loader = DataLoader(dataset, batch_size=num_classes, shuffle=True, generator=torch.Generator(device='cuda'))
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值