RuntimeError: Input type (torch.FloatTensor) and weight type (torch.cuda.FloatTensor) should be the

在尝试用PyTorch进行模型验证时遇到输入与网络参数类型不匹配的问题,错误指出一个是CPU类型,另一个是GPU类型。解决方法包括将输入数据转移到GPU设备上,使用`torch.device('cuda:0')`或`.cuda()`方法。然而,这些常规方法在这篇博客的特定情况下未解决问题。最终,博主发现需要在加载模型时指定`map_location=torch.device('cpu')`来将GPU中的模型映射到CPU,从而使问题得到解决。

今天用pytorch跑完一个分类模型,准备用几张图片验证一下模型时,报错了:
在这里插入图片描述
说输入类型和网络参数类型不匹配,一个是CUP类型,一个是GPU类型,上网搜解决方法如下:

既然网络参数是GPU类型,那解决方法就是将输入类型转变为GPU类型,需要使用到cuda,没有cuda就解决不了。实现方法有两种:

 1. device = torch.device('cuda:0')
	inputs = inputs.to(device)
 2. inputs = inputs.cuda()

#具体代码:
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
print(torch.cuda.is_available())

inputs = inputs.to(device)        	# 方法一:将input这个tensor转换成了CUDA 类型
inputs = inputs.cuda()				# 方法二:将input这个tensor转换成了CUDA 类型

但是,以上方法并不起作用,具体问题可以先找到报错文件:
在这里插入图片描述
进入此文件
在这里插入图片描述
找到加载模型这块,由于我这个模型是在GPU上训练的,在加载时,就需要指定参数map_location=torch.device(“cup”)【torch后面的.device要根据自己定义的GPU对象,我的是device】,将GUP中的模型映射到CUP中,再次运行,问题解决!在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值