当前位置: 首页 > 知识库问答 >
问题:

基于pytorch的多变量线性回归

景帅
2023-03-14

我正在研究Pytorch的线性回归问题
我在单变量情况下取得了成功,但是当我执行多变量线性回归时,我得到了以下错误。我应该如何执行多变量线性回归?

TypeError Traceback(最近调用最后一次)in()9optimizer.zero_grad()#渐变10输出=模型(输入)#输出---

/anaconda/envs/tensorflow/lib/python3.6/site-packages/torch/nn/modules/module.py在调用(自我,*输入,**kwargs)204 205 def调用(自我,*输入,**kwargs):-

/巨蟒/envs/tensorflow/lib/python3。6/现场包/火炬/nn/模块/损耗。前向py(自我,输入,目标)22 _断言_否_梯度(目标)23后端_fn=getattr(自我._后端,键入(自我).name)---

/anaconda/envs/tensorflow/lib/python3.6/site-packages/torch/nn/_functions/thnn/auto.py正向(自我,输入,目标)39输出=input.new(1)40 getattr(自我。_backend,update_output.name)(自我。_<--plhd_state输入目标

TypeError:FloatMseCriteria_updateOutput接收到无效的参数组合-Get(int,torch.FloatTensor,torch.DoubleTensor,torch.FloatTensor,bool),但应为(int状态,torch.FloatTensor输入,torch.FloatTensor目标,torch.FloatTensor输出,bool sizeAverage)

这是代码

#import
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt
from torch.autograd import Variable

#input_size = 1
input_size = 3
output_size = 1
num_epochs = 300
learning_rate = 0.002

#Data set
#x_train = np.array([[1.564],[2.11],[3.3],[5.4]], dtype=np.float32)
x_train = np.array([[73.,80.,75.],[93.,88.,93.],[89.,91.,90.],[96.,98.,100.],[73.,63.,70.]],dtype=np.float32)
#y_train = np.array([[8.0],[19.0],[25.0],[34.45]], dtype= np.float32)
y_train = np.array([[152.],[185.],[180.],[196.],[142.]])
print('x_train:\n',x_train)
print('y_train:\n',y_train)

class LinearRegression(nn.Module):
    def __init__(self,input_size,output_size):
        super(LinearRegression,self).__init__()
        self.linear = nn.Linear(input_size,output_size)

    def forward(self,x):
        out = self.linear(x) #Forward propogation 
        return out

model = LinearRegression(input_size,output_size)

#Lost and Optimizer
criterion = nn.MSELoss()
optimizer = torch.optim.SGD(model.parameters(),lr=learning_rate)

#train the Model
for epoch in range(num_epochs):
    #convert numpy array to torch Variable
    inputs = Variable(torch.from_numpy(x_train)) #convert numpy array to torch tensor
    #inputs = Variable(torch.Tensor(x_train))    
    targets = Variable(torch.from_numpy(y_train)) #convert numpy array to torch tensor

    #forward+ backward + optimize
    optimizer.zero_grad() #gradient
    outputs = model(inputs) #output
    loss = criterion(outputs,targets) #loss function
    loss.backward() #backward propogation
    optimizer.step() #1-step optimization(gradeint descent)

    if(epoch+1) %5 ==0:
        print('epoch [%d/%d], Loss: %.4f' % (epoch +1, num_epochs, loss.data[0]))
        predicted = model(Variable(torch.from_numpy(x_train))).data.numpy()
        plt.plot(x_train,y_train,'ro',label='Original Data')
        plt.plot(x_train,predicted,label='Fitted Line')
        plt.legend()
        plt.show()

共有1个答案

司空叶五
2023-03-14

您需要确保数据具有相同的类型。在这种情况下x_train是32位浮点数,而y_train是双。你必须使用:

y_train = np.array([[152.],[185.],[180.],[196.],[142.]],dtype=np.float32)
 类似资料:
  • 在本章中,我们将重点介绍使用TensorFlow进行线性回归实现的基本示例。逻辑回归或线性回归是用于对离散类别进行分类的监督机器学习方法。在本章中的目标是构建一个模型,用户可以通过该模型预测预测变量与一个或多个自变量之间的关系。 如果是因变量而变化,则认为是自变量。两个变量之间的这种关系可认为是线性的。两个变量的线性回归关系看起来就像下面提到的方程式一样 - 接下来,我们将设计一个线性回归算法,有

  • 好的,那么这个算法到底意味着什么呢? 据我所知: i) 阿尔法:梯度下降的步骤有多大。 ii)现在,∑{hTheta[x(i)]-y(i)}:指给定θ值的总误差。 误差是指预测值{hTheta[x(i)]}与实际值之间的差值。[y(i)] σ{hTheta[x(i)]-y(i)}给出了所有训练示例中所有误差的总和。 结尾的Xj^(i)代表什么? 在为多元线性回归实现梯度下降时,我们是否在执行以下操

  • 本文向大家介绍基于python中theano库的线性回归,包括了基于python中theano库的线性回归的使用技巧和注意事项,需要的朋友参考一下 theano库是做deep learning重要的一部分,其最吸引人的地方之一是你给出符号化的公式之后,能自动生成导数。本文使用梯度下降的方法,进行数据拟合,现在把代码贴在下方 代码块 其基本思想是随机梯度下降。 以上就是本文的全部内容,希望对大家的学

  • 我被困在我的项目上,我还有两天的时间,所以我希望你们能帮助我。 我的JFrame"UserManager"显示用户的信息,这些信息是: 姓名、地址、电话号码等 当我必须显示BankAccount对象时,我的问题就来了:因为每个用户都可以拥有无限数量的银行账户——每个账户都存储在一个名为“ownedAccounts”的Arraylist中——我想在JFrame中创建小面板。 实例化JPanel并不是

  • 在我的Spring Boot应用程序中,我有一个组件,用来监视另一个外部系统的运行状况。该组件还提供了一种公共方法,反应链可以订阅该方法,以等待外部系统启动。 方法是公共的,可以从许多不同的线程调用。这背后的想法是为应用程序中的一些反应性磁链提供一种暂停其处理的方法,直到外部系统启动。当外部系统关闭时,这些链无法处理其元素。 这里的问题是,我无法真正理解这段代码的哪一部分需要同步。我认为多个线程同

  • 在建立一个简单的感知器神经网络时,我们通常将输入格式为的二维矩阵传递给一个二维权重矩阵,类似于这个简单的神经网络的numpy。我总是假设一个神经网络的感知器/密集/线性层只接受一个2D格式的输入并输出另一个2D输出。但是最近我遇到了这个pytorch模型,其中一个线性层接受一个3D输入张量并输出另一个3D张量()。 这些就是我的问题, 上述神经网络是否有效?这就是模型是否能够正确地训练? 即使在传