RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2

RuntimeError: Expected object of scalar type Float but got scalar type Double for argument #2 ‘mat1’ in call to _th_addmm的错误

出错代码是output = model(img, da).data.cpu().numpy(),在一个混合类型数据输入的模型中,forward时产生报错,调用的两个参数数据类型不同。前者源自于图片,后者源自于numpy数组。

torchvision.transforms.ToTensor()

图片的dtype源自于transforms.ToTensor(),该函数可以将PILImage或者numpy的ndarray转化成Tensor,在转换PILImage时,默认转换后的dtype是torch.float32;在用于numpy的ndarray时取决于原本的dtype。

torch.Tensor()和torch.tensor()

在报错原代码中是使用DataLoader直接读取numpy数组,默认保持了numpy数组的默认类型float64,可以将其转换为torch.float32类型。torch.Tensor()是torch中的类,可以默认地生成torch.FloatTensor,即其dtype为torch.float32()。而torch.tensor()是torch中的函数,是将对象转变为Tensor,但其dtype取决于原有类型,若使用于numpy数组,则默认转变为torch.DoubleTensor。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值