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

该博客展示了如何使用PyTorch构建一个简单的线性模型,包括模型定义、前向传播、损失计算、梯度清零、反向传播和优化器更新参数的过程。通过训练样本(x_data, y_data)进行迭代训练,并在训练结束后输出模型的权重和偏置,以及对测试样本的预测结果。
摘要由CSDN通过智能技术生成
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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值