我应该如何修复代码才能使使用火车数据的线性回归模型正常工作?
How should I fix the code in order to make the linear regression model using train data properly work?
我应该做的是收集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()
))
代码片段中有几个小错误,其实你可以从错误信息中看出这些
- torch.Tensor(),并且“torch.Tensor 是默认张量类型 (torch.FloatTensor) 的别名”
- 您输入的数据应该是 Python 列表或序列
- Ir->lr(不是 ir,而是 Lr)
- 针对 nan 问题尝试降低学习率 (lr)
- 用足够的 epoch 进行训练
只需最少的修改,它就可以工作
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()
))
我应该做的是收集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()
))
代码片段中有几个小错误,其实你可以从错误信息中看出这些
- torch.Tensor(),并且“torch.Tensor 是默认张量类型 (torch.FloatTensor) 的别名”
- 您输入的数据应该是 Python 列表或序列
- Ir->lr(不是 ir,而是 Lr)
- 针对 nan 问题尝试降低学习率 (lr)
- 用足够的 epoch 进行训练
只需最少的修改,它就可以工作
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()
))