目录
二、expected scalar type double but found float 报错
一、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 报错
可能是因为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()
...
之后再有学习错误,继续补充!!:)