初学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()
... 

 



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

你可能感兴趣的:(随便写写,python,numpy,深度学习)