#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)