Проверьте, является ли ожидаемый объект серверным CUDA или CPU? - PullRequest
0 голосов
/ 23 апреля 2019
  • Я пытаюсь запустить код на CPU и CUDA.

  • Проблема возникает, когда я создаю объекты, так как мне нужно знать, что ожидается.

Мне нужно определить, ожидает ли компьютер тензора CUDA или CPU, прежде чем он будет создан.

Код:

def initilize(self, input):
     self.x = torch.nn.Parameter(torch.zeros((1,M))

def run(self,x,state):
  B = torch.cat((self.x,h)

Это выводит:

Error: 'Expected object of backend CUDA but got backend CPU for argument #1'

Кодовая идея:

def initilize(self, input):
  device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
  if (expecting_cuda == True):
     self.x = torch.nn.Parameter(torch.zeros((1,M)).to(device))
  else
     self.x = torch.nn.Parameter(torch.zeros((1,M))

def run(self,h):
  B = torch.cat((self.x,h)
  • Вопрос: Как выяснить, что ожидает компьютер?

  • Ограничения: Я выполняю предварительно определенную процедуру проверки, поэтому я не могу отправить аргумент в функцию 'initilize' с информацией о CUDA или CPU.

1 Ответ

1 голос
/ 23 апреля 2019

Вы можете просто использовать self.x = torch.nn.Parameter(torch.zeros((1,M)).to(device)), нет необходимости в if (expecting_cuda == True):, потому что to(device) также будет работать для процессора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...