PyTorch实现Linear Regression

这篇博客详细介绍了如何使用PyTorch实现线性回归,包括数据集准备、使用Module设计模型、构建损失函数和优化器,以及训练过程。重点讲解了numpy的广播机制和Module的自动反向传播功能。

Linear Regression

1. Prepare dataset

numpy中的广播机制:https://www.cnblogs.com/jiaxin359/p/9021726.html

import torch

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

2. Design model using Class

  • 用Module构造出来的对象,会在构造计算图的过程中自动backward。

  • Linear layers

  • 建立可调用对象

    参考文章:https://www.jianshu.com/p/a96e71ff7f07?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

def func(*args, **kwargs):
	print(args)  # 返回的是(1, 2, 4, 3)
	print(kwargs) # 返回的是 {'x': 3, 'y': 5}


func(1, 2, 4, 3, x=3, y=5)

class Foobar
### 实现线性回归模型 为了构建一个简单的线性回归模型,在 PyTorch 中定义了一个继承自 `nn.Module` 的类。这个类包含了初始化方法 (`__init__`) 和前向传播方法 (`forward`)。对于线性回归而言,仅需一层线性变换即可完成预测计算[^2]。 ```python import torch from torch import nn, optim import numpy as np class LinearRegressionModel(nn.Module): def __init__(self, input_dim): super(LinearRegressionModel, self).__init__() # 定义单层全连接神经网络 self.linear_layer = nn.Linear(input_dim, 1) def forward(self, x): # 前向传播过程,通过线性层得到输出 predictions = self.linear_layer(x) return predictions ``` 创建好模型之后,下一步就是准备数据并对其进行训练。这里假设已经有了输入特征 X 和目标变量 y: ```python # 数据预处理部分省略... X_train_tensor = torch.tensor(X_train.values.astype(np.float32)) y_train_tensor = torch.tensor(y_train.values.reshape(-1, 1).astype(np.float32)) model = LinearRegressionModel(input_dim=X_train.shape[1]) criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=0.01) ``` 接着进入训练循环阶段,更新权重参数直到收敛为止: ```python num_epochs = 1000 for epoch in range(num_epochs): model.train() outputs = model(X_train_tensor) loss = criterion(outputs, y_train_tensor) optimizer.zero_grad() loss.backward() optimizer.step() if (epoch+1) % 100 == 0: print(f'Epoch [{epoch+1}/{num_epochs}], Loss: {loss.item():.4f}') ``` 当完成了上述步骤后,可以保存已经训练好的模型以便后续加载使用: ```python torch.save(model.state_dict(), 'linear_regression_model.pth') loaded_model = LinearRegressionModel(input_dim=X_train.shape[1]) loaded_model.load_state_dict(torch.load('linear_regression_model.pth')) loaded_model.eval() ``` 最后利用测试集验证模型效果,并打印出相应的准确性和损失值作为评价指标[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值