Модель PyTorch ожидает объекты на ЦП, несмотря на то, что на ГП - PullRequest
0 голосов
/ 10 октября 2019

У меня есть модель PyTorch, которую я отправил на свое устройство (графический процессор в GCS):

dnn_regressor = DNNRegressor(n_feature=dataset.X.shape[1], 
                         n_hidden=512, 
                         n_hidden_layers=5,
                         batch_norm=True,
                         n_output=1).to(device)

аналогично, перед тренировкой я также отправил свои (пакетные) данные в графический процессор. Однако, когда я оптимизирую модель, кажется, что она не связана с GPU:

     17         X_batch, y_batch = X_batch.to(device), y_batch.to(device)
     18 
---> 19         prediction = dnn_regressor(X_batch)     # input x and predict based on x

RuntimeError: Expected object of backend CPU but got backend CUDA for argument #4 'mat1'

Я уверен, что я сделал что-то явно не так, но я не вижу, что это может быть.

1 Ответ

0 голосов
/ 10 октября 2019

Проблема здесь, кажется, связана с тем, как я строил модель. Я наивно думал, что смогу сохранить свои слои в списке (чтобы я мог генерировать их программно). Оказывается, мне нужно вместо этого использовать torch.nn.ModuleList, иначе они не будут добавлены в модель. Не совсем понятно, почему это приводит к тому, что модель не отправляется в графический процессор, а использование ModuleList s решает проблему.

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