从零手写线性回归模型:PyTorch 实现深度学习入门教程

系列文章目录

Pytorch基础篇

01-PyTorch新手必看:张量是什么?5 分钟教你快速创建张量!
02-张量运算真简单!PyTorch 数值计算操作完全指南
03-Numpy 还是 PyTorch?张量与 Numpy 的神奇转换技巧
04-揭秘数据处理神器:PyTorch 张量拼接与拆分实用技巧
05-深度学习从索引开始:PyTorch 张量索引与切片最全解析
06-张量形状任意改!PyTorch reshape、transpose 操作超详细教程
07-深入解读 PyTorch 张量运算:6 大核心函数全面解析,代码示例一步到位!
08-自动微分到底有多强?PyTorch 自动求导机制深度解析

Pytorch实战篇

09-从零手写线性回归模型:PyTorch 实现深度学习入门教程
10-PyTorch 框架实现线性回归:从数据预处理到模型训练全流程
11-PyTorch 框架实现逻辑回归:从数据预处理到模型训练全流程
12-PyTorch 框架实现多层感知机(MLP):手写数字分类全流程详解



前言

在机器学习的学习过程中,我们接触过 线性回归 模型,并使用过如 Scikit-learn 这样的工具来快速实现。但在本文中,将深入理解线性回归的核心思想,并使用 PyTorch 从零开始手动实现一个线性回归模型。这包括:

  1. 数据集的构建;
  2. 假设函数的定义;
  3. 损失函数的设计;
  4. 梯度下降优化方法的实现;
  5. 模型训练和损失变化的可视化。

一、构建数据集

线性回归需要一个简单的线性数据集,我们将通过sklearn.datasets.make_regression 方法生成。

1.1 示例代码

import torch
from sklearn.datasets import make_regression
import matplotlib.pyplot as plt
import random

def create_dataset():
    """
    使用 make_regression 生成线性回归数据集,并转换为 PyTorch 张量。
    """
    x, y, coef = make_regression(
        n_samples=120,  # 样本数量,即数据点个数
        n_features=1,   # 每个样本只有一个特征
        noise=15,       # 添加噪声,模拟真实场景
        coef=True,      # 是否返回生成数据的真实系数
        bias=12.0,      # 偏置值,即 y = coef * x + bias
        random_state=42 # 随机种子,保证结果一致性
    )

    # 转换为 PyTorch 张量
    x = torch.tensor(x, dtype=torch.float32)  # 输入特征张量
    y = torch.tensor(y, dtype=torch.float32).reshape(-1, 1)  # 输出标签张量转换为二维

    return x, y, coef  # 返回输入特征张量、输出标签张量和真实系数

# 数据加载器,用于批量获取数据
def data_loader(x, y, batch_size):
    """
    数据加载器,按批次随机提取训练数据。
    参数:
        x: 输入特征张量
        y: 输出标签张量
        batch_size: 批量大小
    """
    data_len = len(y)  # 数据集长度
    indices = list(range(data_len))  # 创建索引列表
    random.shuffle(indices)  # 随机打乱索引,保证数据随机性
    num_batches = data_len // batch_size  # 计算批次数

    for i in range(num_batches):  # 遍历每个批次
        start = i * batch_size  # 当前批次起始索引
        end = start + batch_size  # 当前批次结束索引

        # 提取当前批次的数据
        batch_x = x[indices[start:end]]  # 当前批次输入
        batch_y = y[indices[start:end]]  # 当前批次输出

        yield batch_x, batch_y  # 返回当前批次数据

1.2 示例输出

运行 create_dataset 后的数据分布为线性趋势,同时包含噪声点。例如:

x:
tensor([[-1.3282],
        [ 0.1941],
        [ 0.8944],
        ...])
y:
tensor([-40.2345,  15.2934,  45.1282, ...])
coef:
tensor([35.0])

二、构建假设函数

线性回归的假设函数可以表示为:
y ​ = w ⋅ x + b y ^ ​ =w⋅x+b y=wx+b
其中,( w ) 是权重,( b ) 是偏置。使用 PyTorch 张量定义这些参数。

2.1 示例代码

# 模型参数初始化
w = torch.tensor(0.5, requires_grad
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吴师兄大模型

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值