【问题标题】:PyTorch model expects objects on CPU despite being on GPU尽管在 GPU 上,PyTorch 模型仍需要 CPU 上的对象
【发布时间】:2019-10-11 04:33:31
【问题描述】:

我有一个 PyTorch 模型,已发送到我的设备(GCS 上的 GPU):

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。但是,当我优化模型时,它似乎与 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'

我确定我做错了什么,但我看不出它可能是什么。

【问题讨论】:

    标签: pytorch


    【解决方案1】:

    这里的问题似乎与我构建模型的方式有关。我天真地认为我可以将我的图层保存在一个列表中(这样我就可以通过编程方式生成它们)。事实证明,我需要改用torch.nn.ModuleList,否则它们似乎没有添加到模型中。不完全确定为什么这会导致模型没有发送到 GPU,但使用 ModuleLists 可以解决问题。

    【讨论】:

      猜你喜欢
      • 2018-05-26
      • 2021-08-22
      • 2018-12-13
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      • 2020-11-29
      相关资源
      最近更新 更多