RuntimeError: expected device cuda:4 but got device cpu

报错情况

在计算两个tensor的loss时,使用了如下代码:

u = eps * (torch.log(mu+1e-8) - torch.logsumexp(self.M(C, u, v), dim=-1)) + u

报错:RuntimeError: expected device cuda:4 but got device cpu

 

 

错误原因

这里,M是一个函数。C的类型为:

tensor([[44514.2383 ... 44565.1055]], device='cuda:4',
       grad_fn=<SumBackward1>)

u的类型为:

(Pdb) u
tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.])

u和C一个在cpu上,一个在gpu上,从而报错RuntimeError: expected device cuda:4 but got device cpu

 

解决方法

定义u的时候加上u.cuda(gpu_ids[0])

即u.cuda(4)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章