2021-02-27

[已解決] RuntimeError: Input and parameter tensors are not at the same device, found input tensor at cpu and parameter tensor at cuda:0

這個報錯較多發生在讀取『已經訓練好的模型』後、接著再使用 CPU 驅動模型進行分類的情況。

為什麼會發生這個報錯呢?其實報錯中也都說明了:

Input and parameter tensors are not at the same device.

很有可能,我們讀取的模型預設是放在 GPU 的記憶體中、而我們要用來處理的新資料,則是放在 CPU 中。

解決方法其實說穿了異常單純:既然模型預設是放在 GPU 的記憶體中 (畢竟當初就是在 GPU 上訓練的),那麼,我們只要將模型一起放到 CPU 中即可。

大致上可能的程式如下:

import torch
model = torch.load('MODEL_NAME').cpu()

這樣一來,模型就從原先預設的 GPU 移動至 CPU 了。

順帶一提,我真實遇見的情況是我模型讀取進來預設是放在第一顆 GPU、然而我想要重新處理的資料放在第二顆 GPU。

所以,在我的案例中,我將模型移動至了第二顆 GPU。

import torch

model = torch.load('MODEL_NAME').to('cuda:1')

就像這樣。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值