报错
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:1 and cuda:0
可能原因1:
传入模型的数据格式为对象(object),DataParallel无法分割对象类型的数据,没有分割直接传入gpu0。
DataParallel只能自动分割Tensor, tuple, list, dict这几种类型的数据。
可能原因2:
如果你的model存在多个encoder、fusion或者discriminator,可以考虑根据如下方式调整encoder
encoder = YourEncoder1(config).to(device)
model = YourMoldel(encoder).to(device)
model = torch.nn.DataParallel(model)
注意:
- torch.nn.DataParallel前必须要写 ‘=’
- YourEncoder1需要是nn.Module,不然也是无法分配的