PyTorch — графический процессор не используется тензорами, несмотря на обнаруженную поддержку CUDA

#python #python-3.x #pytorch #torch

#python #python-3.x #pytorch #torch

Вопрос:

Как четко указано в названии вопроса, несмотря на то, что t orch.cuda.is_available() возвращает True , CPU используется вместо GPU тензорами. Я установил для device тензора значение GPU через images.to(device) вызов функции после определения device . Когда я отлаживаю свой код, я могу видеть, что device установлено значение cuda:0 ; но для тензора device все еще установлено значение cpu .

Определение устройства:

 use_cuda = torch.cuda.is_available()  # returns True
device = torch.device('cuda:0' if use_cuda else 'cpu')
  

Определение устройства тензоров:

 for epoch in range(num_epochs):
    for i, (images, labels) in enumerate(train_loader):
        images.to(device)
        labels.to(device)
        # both of images and labels' devices are set to cpu
  

Программный стек:

 Python 3.7.1
torch 1.0.1
Windows 10 64-bit
  

p.s. PyTorch устанавливается с возможностью поддержки Cuda 9.0.

Комментарии:

1. Каковы вычислительные возможности CUDA графического процессора?

2. Это GeForce Desktop Products - NVIDIA GeForce GTX 1070 на ноутбуке. @KlausD.

3. Ваша сеть также подключена к устройству? Вам тоже нужно сделать что-то вроде net.to(device) .

4. Да, это так. @dennlinger

Ответ №1:

tensor.to() не изменяет тензор на месте. Он возвращает новый тензор, который хранится на указанном устройстве.

Вместо этого используйте следующее.

  images = images.to(device)
 labels = labels.to(device)