pytorch 实现简单的线性回归模型

import torch


# 流程:1.设计模型
#      2.算y_hat
#      3.算loss
#      4.梯度清零
#      5.反向传播求梯度(变量对loss的导数)
#      6.优化器(更新参数)
#      7.返回第二步
class LinearModel(torch.nn.Module):
    def __init__(self):
        # 调用父类的方法
        super().__init__()

        # 两个参数分别是输入维度,和输出维度
        # nn 表示神经元网络,Liner返回一个对象
        self.linear = torch.nn.Linear(1, 1)

    def forward(self, x):
        # 对象后加括号,表示可调用对象callable对象
        y_hat = self.linear(x)
        return y_hat


# 父类Module是可调用类,可以直接model(x)调用foward方法
model = LinearModel()

# 求loss,不求均值
criterion = torch.nn.MSELoss(size_average=False)

# 优化器,更新w和b,parameters是调用父类的方法
optimizer = torch.optim.SGD(model.parameters(), lr=0.01)

# 训练样本
x_data = torch.Tensor([[1.0], [2.0], [3.0]])
y_data = torch.Tensor([[2.0], [4.0], [6.0]])

for epoch in range(100):
    y_hat = model(x_data)
    loss = criterion(y_hat, y_data)
    print(epoch, loss)

    optimizer.zero_grad()
    # 反向传播求梯度
    loss.backward()
    # 更新参数
    optimizer.step()

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_hat = ", y_test.data)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值