初学torch【报错:expected scalar type double but found float、rmse】

目录

一、inout

二、expected scalar type double but found float 报错

三、pytorch中回归评价rmse:


一、inout

torch网络训练,输入需要转换为tensor格式:

import torch
import numpy
A = torch.arange(12, dtype=torch.float32).reshape((3,4))
B = A.detach().numpy()  # tensor转换为ndarray
C = torch.from_numpy(B) # ndarray转换为tensor
type(A),type(B),type(C)
 

【学习】:tensorflow中转换:

(10条消息) Tensorfow中Tensor与Numpy的ndarray转换_tensorflow 转numpy_火成哥哥的博客-CSDN博客 

二、expected scalar type double but found float 报错

【学习】:(2条消息) 解决pytorch当中RuntimeError: expected scalar type Double but found Float的问题_weixin_55191433的博客-CSDN博客

可能是因为tensor的数据类型不对,有可能是反向传播中输入x的类型不对,也有可能是训练和测试过程中的data类型不对,如果是反向传播过程的话,那就要看是哪一层神经网络出现问题,就在哪一层的前面加上:

x=x.to(torch.float32) 

如果是在训练或者测试模型中出现这个问题,则解决方法如下:

input=input.to(torch.float32)

是训练或者测试过程中labels的类型不对,解决方法如下:

label=labei.long() 

三、pytorch中回归评价rmse:

import torch.nn as nn
import torch
...
self.criterion=nn.MSELoss(reduction="mean")
...
prediction_data=...
label_data=...
RMSELoss=torch.sqrt(self.criterion(prediction_data,label_data))
RMsELoss.backward()
... 

 



之后再有学习错误,继续补充!!:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值