【问题标题】:Error: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same错误:输入类型(torch.FloatTensor)和权重类型(torch.cuda.FloatTensor)应该相同
【发布时间】:2021-12-30 23:34:09
【问题描述】:

我正在尝试使用 pytorch 训练 DNN 模型,并且我想使用 GPU 来训练我的模型。我能够使用model.to(device) 成功地将我的模型复制到GPU,其中device = cuda:0

但是,将输入复制到 GPU 的标准方法 (RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the same),即 X.to(device)X.cuda() 并没有给我想要的输出。以下是我目前正在实施的方法:

def train_loop(self, dataloader, device):
    size = len(dataloader.dataset)
    for batch, (X, y) in enumerate(dataloader):
        # Compute prediction and loss
        print(device)
        X.to(device)
        print(X.is_cuda)
        y.to(device)
        
        pred = self.model(X)
        loss = self.loss_fn(pred, y)

在打印设备值print(device) 时,它显示为:cuda:0。但是当我运行print(X.is_cuda) 时,它会返回false。 (下面附上截图)。

请告诉我哪里出错了。谢谢!

【问题讨论】:

    标签: python machine-learning deep-learning pytorch


    【解决方案1】:

    X.to(device) 什么都不做。 将其更改为:

    x=x.to(device)
    

    当然,这应该对你想要在 GPU 上的任何参数\变量进行

    【讨论】:

    • 哦,好的。谢谢!这解决了问题
    猜你喜欢
    • 2021-12-06
    • 2020-09-29
    • 2021-01-03
    • 2023-03-27
    • 2022-11-11
    • 2021-07-19
    • 1970-01-01
    • 2023-04-10
    • 2020-08-05
    相关资源
    最近更新 更多