Как сделать CIFAR-10 с PyTorch на CUDA? - PullRequest
0 голосов
/ 26 мая 2018

Я следую учебному пособию по CIFAR-10 PyTorch на этой странице Pytorch , и не могу запустить PyTorch на GPU.Код точно такой же, как в руководстве.

Я получаю ошибку:

Traceback (most recent call last):
  File "(file path)/CIFAR10_tutorial.py", line 116, in <module>
   outputs = net(images)
  File "/usr/local/lib/python3.5/dist-packages/torch/nn/modules/module.py", line 491, in __call__
result = self.forward(*input, **kwargs)
  File "(file path)/CIFAR10_tutorial.py", line 65, in forward
x = self.pool(F.relu(self.conv1(x)).cuda())
  File "/usr/local/lib/python3.5/dist-packages/torch/nn/modules/module.py", line 491, in __call__
result = self.forward(*input, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/torch/nn/modules/conv.py", line 301, in forward
self.padding, self.dilation, self.groups)

Моя версия CUDA - 9.0, Pytorch 0.4.0.Я использовал tenorflow-gpu на машине, поэтому я знаю, что CUDA настроен правильно.Где именно я должен использовать .cuda () и .to (устройство), как предложено в руководстве?

1 Ответ

0 голосов
/ 30 мая 2018

Я оставляю ответ, на случай, если кто-то еще застрянет на том же.

Сначала настройте Pytorch на использование графического процессора, если он доступен

device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print(device)

Затем в *Функция 1006 * init , приведенная к gpu путем вызова .cuda () для каждого элемента NN, например,

self.conv1 = nn.Conv2d(3, 24, 5).cuda()
self.pool = nn.MaxPool2d(2, 2).cuda()

Если вы не уверены в графическом процессоре,вызовите .to (устройство) для каждого элемента.

В функции forward (self, x) , перед выполнением шагов, я сделал

x = x.to(device)

Сразу после создания сетевого объекта, приведите его к устройству с помощью

net.to(device)

Все входы и метки должны быть наложены на устройство перед выполнением любой операции над ними.

inputs, labels = inputs.to(device), labels.to(device)

Я пропускаю написание всего кода, так как ссылка уже упоминалась в вопросе.Если кажется, что есть несколько лишних приведений к gpu, они ничего не ломают.Я мог бы также собрать ipynb с изменениями.

...