练习2 用pytorch实现线性模型

1.准备数据集

2.准备模型LinearModel,其中要实现构造函数和forward函数

3.准备MSE损失函数,和优化器

4.准备训练,先用model(x),调用forward计算y_hat,然后用损失函数计算loss,对loss进行backward得到梯度,用优化器optimizer.step()进行更新。最后进行一个预测,记得预测的x得是一个Tensor。

import torch

x_data=torch.Tensor([[1.0],[2.0],[3.0]])
y_data=torch.Tensor([[2.0],[4.0],[6.0]])

class LinearModel(torch.nn.Module): #用nn.Module构造一个类,即继承Module,需要实现__init__函数和forward函数
    def __init__(self): #构造函数
        super(LinearModel,self).__init__()
        self.linear=torch.nn.Linear(1,1) #(Linear是继承自Module)构造Linear对象linear,输入样本和输出样本的维度,即特征数

    def forward(self,x):
        y_pred=self.linear(x) #可调用对象
        return y_pred

model=LinearModel()

critertion=torch.nn.MSELoss(reduction = 'sum') #MSE也是Moudule的一个类,reduction='sum'返回的是损失总值,'mean'是均值
optimizer=torch.optim.SGD(model.parameters(),lr=0.01) #SGD是优化模块的一个类,parameters找到model中可训练的参数进行训练

for epoch in range(1000):
    y_pred=model(x_data) #调用model的forward计算y_hat
    #print(y_pred.data)
    loss=critertion(y_pred,y_data) #forward: loss,
    print(epoch,loss.item())

    optimizer.zero_grad() #清空梯度
    loss.backward() #backward自动计算梯度
    optimizer.step() #更新w和b的值

print('w=',model.linear.weight.item())
print('b=',model.linear.bias.item())

x_test=torch.tensor([[4.0]])
y_test=model(x_test)
print('y_pred=',y_test.data)

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值