在PyTorch中,当我们定义了一个tensor时,我们需要指定这个tensor所在的设备,这通常可以通过 torch.device()
和 to()
方法来实现。
如果你在定义一个tensor的时候没有指定设备,PyTorch会默认使用当前的设备(默认情况下是CPU)。但是,如果当前的设备未知,那么就会出现“AssertionError: Assertion `device >= -1' failed. ”的错误。
出现这个错误的原因可能是以下几种情况:
-
当前定义的tensor的设备未知,即为
None
-
当前定义的tensor所在的设备不支持CUDA,但是你却尝试将其转移到CUDA设备上
从以上两个情况出发,我们可以想到以下解决方法:
-
在定义或者转移tensor时,明确指定设备,避免使用
None
import torch # 在GPU上定义一个tensor device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") tensor = torch.randn(3,3, device=device) # 将tensor转移到CPU上 tensor = tensor.to('cpu')
-
在不确定设备是否支持CUDA的情况下,可以使用以下代码来判断设备类型:
if torch.cuda.is_available(): device = torch.device("cuda") else: device = torch.device("cpu") # 在设备上定义一个tensor tensor = torch.randn(3,3, device=device) # 将tensor转移到另一个设备上 if torch.cuda.is_available(): tensor = tensor.to('cpu') else: tensor = tensor.to('cuda')
在实际使用时,除了定义tensor时要注意指定设备之外,还要注意确保你所使用的操作和函数是否支持你所指定的设备。在使用时要仔细检查API文档。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyTorch报”AssertionError: Assertion `device >= -1′ failed. “的原因以及解决办法 - Python技术站