【问题标题】:How should I fix the code in order to make the linear regression model using train data properly work?我应该如何修复代码以使使用训练数据的线性回归模型正常工作?
【发布时间】:2021-09-24 21:31:26
【问题描述】:

我应该做的是收集 5 个人的身高和体重信息,并将其作为训练数据来学习 Colab 中的线性回归模型。

有一个示例代码,所以我修复了它,但它从一开始就不起作用。

我应该如何修复代码以使使用训练数据的线性回归模型正常工作?到目前为止我修复的代码如下。下面的身高体重数据是我随机选择的数值。

import torch
import torch.optim as optim

# Defining data
x_train=torch.Float Tensor([48],[52],[60],[65],[73])
y_train=torch.Float Tensor([158],[162],[170],[175],[183])

# Hypothesis initiaization
W=torch.zeros(1,requires_grad=True)
b=torch.zeros(1,requires_grad=True)

# Defining Optimizer 
optimizer=torch.optim.SGD([W,b],Ir=0.01)

nb_epochs=1000
for epoch in range(nb_epochs+1):
  # Calculating H(x)
  hypothesis=x_train*W+b
  # Calculating cost
  cost=torch.mean((hypothesis-y_train)**2)
  # Learning with Optimizer
  optimizer.zero_grad()
  cost.backward()
  optimizer.step()


  # Log output every 100 times
  if epoch % 100 ==0:
    print('Epoch{:4d}/{}W:{:.3f},b:{:.3f}Coast:{:.6f}'.format(
        epoch,nb_epochs,W.item(),b.item(),cost.item()
    ))

【问题讨论】:

    标签: machine-learning pytorch linear-regression


    【解决方案1】:

    代码sn-p有几个小错误,其实你可以从错误信息中看出来

    1. torch.Tensor(),而“torch.Tensor是默认张量类型(torch.FloatTensor)的别名”
    2. 您输入的数据应该是 Python 列表或序列
    3. Ir->lr(不是 ir,而是 Lr)
    4. 尝试降低 nan 问题的学习率 (lr)
    5. 训练有足够的 epochs

    只要修改最少,它就可以工作

    import torch
    import torch.optim as optim
    
    # Defining data
    x_train=torch.Tensor([[48],[52],[60],[65],[73]])
    y_train=torch.Tensor([[158],[162],[170],[175],[183]])
    
    # Hypothesis initiaization
    W=torch.zeros(1,requires_grad=True)
    b=torch.zeros(1,requires_grad=True)
    
    # Defining Optimizer 
    optimizer=torch.optim.SGD([W,b],lr=0.0001)
    
    nb_epochs=1000000
    for epoch in range(nb_epochs+1):
      # Calculating H(x)
      hypothesis=x_train*W+b
      # Calculating cost
      cost=torch.mean((hypothesis-y_train)**2)
      # Learning with Optimizer
      optimizer.zero_grad()
      cost.backward()
      optimizer.step()
    
    
      # Log output every 200 times
      if epoch % 200 ==0:
        print('Epoch{:4d}/{}W:{:.3f},b:{:.3f}Coast:{:.6f}'.format(
            epoch,nb_epochs,W.item(),b.item(),cost.item()
        ))
    

    参考: https://pytorch.org/docs/stable/tensors.html

    【讨论】:

    • 非常感谢你......非常感谢你的好意!
    猜你喜欢
    • 1970-01-01
    • 2017-03-02
    • 2012-05-05
    • 2021-03-03
    • 2021-11-15
    • 2022-09-18
    • 2015-04-06
    • 2016-03-22
    • 1970-01-01
    相关资源
    最近更新 更多