[Solved] Pytorch loading model specified GPU card number error or failed to specify

According to the pytorch document, when loading the model, you can specify to load the tensor of the model to a specific target GPU
the loading methods are:

>>> torch.load('tensors.pt')
# 1. Load all tensors onto the GPU 0
>>> torch.load('tensors.pt', map_location=torch.device('cuda:0'))
# 2. Load all tensors onto GPU 1
>>> torch.load('tensors.pt', map_location=lambda storage, loc: storage.cuda(1))
# 3. Map tensors from GPU 1 to GPU 0
>>> torch.load('tensors.pt', map_location={'cuda:1':'cuda:0'})

The actual measurement shows that
method 1 is not loaded into the target card at all. The original card on which the model was trained is still loaded into the original old card number, so the assignment fails
in method 3, errors are reported between codes. Location. Startswitch (‘cuda ‘): attributeerror:’ nonetype ‘object has no attribute’ startswitch ‘. After analyzing the code, it is found that this is a bug of torch itself! Pit father
method 2: normally load the tensors on cuda1.

Read More: