PyTorch基本使用-自动微分模块

学习目的:掌握自动微分模块的使用

训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名为 torch.autograd的微分引擎。它支持任意计算图的自动梯度计算:

接下来我们使用这个结构进行自动微分模块的介绍。我们使用 backward 方法、grad 属性来实现梯度的计算和访问。

  • 当X为标量时梯度的计算

    python 复制代码
    import torch
    # 1. 当X为标量时梯度的计算
    def test01():
        x = torch.tensor(5)
        # 目标值
        y = torch.tensor(0.)
        # 设置要更新的权重和偏置的初始值
        w = torch.tensor(1.0,requires_grad=True,dtype=torch.float32)
        b = torch.tensor(3.0,requires_grad=True,dtype=torch.float32)
        #设置网络的输出值
        z = x*w + b #矩阵乘法
        # 设置损失函数,并进行损失计算
        loss = torch.nn.MSELoss()
        loss = loss(z,y)
        # 自动微分
        loss.backward()
        # 打印w,b变量的梯度
        # backward 函数计算的梯度值会存储在张量的grad 变量中
        print('W的梯度:',w.grad)
        print('B的梯度:',b.grad)
    
    test01()

    输出结果:

    tex 复制代码
    W的梯度: tensor(80.)
    B的梯度: tensor(16.)
  • 当X为多维张量时梯度计算

    python 复制代码
    import torch
    def test02():
        # 输入张量 2*5
        x = torch.ones(2,5)
        # 目标张量 2*3
        y = torch.zeros(2,3)
        # 设置要更新的权重和偏置的初始值
        w = torch.randn(5,3,requires_grad=True)
        b = torch.randn(3,requires_grad=True)
        #设置网络的输出值
        z = torch.matmul(x,w)+ b #矩阵乘法
        # 设置损失函数,并进行损失计算
        loss = torch.nn.MSELoss()
        loss = loss(z,y)
        # 自动微分
        loss.backward()
        # 打印w,b变量的梯度
        # backward 函数计算的梯度值会存储在张量的grad 变量中
        print('W的梯度:',w.grad)
        print('B的梯度:',b.grad)
    
    test02()

    输出结果:

    tex 复制代码
    W的梯度: tensor([[-1.7502,  0.8537,  0.6175],
            [-1.7502,  0.8537,  0.6175],
            [-1.7502,  0.8537,  0.6175],
            [-1.7502,  0.8537,  0.6175],
            [-1.7502,  0.8537,  0.6175]])
    B的梯度: tensor([-1.7502,  0.8537,  0.6175])
相关推荐
Memene摸鱼日报9 分钟前
「Memene 摸鱼日报 2025.9.16」OpenAI 推出 GPT-5-Codex 编程模型,xAI 发布 Grok 4 Fast
人工智能·aigc
xiaohouzi11223312 分钟前
OpenCV的cv2.VideoCapture如何加GStreamer后端
人工智能·opencv·计算机视觉
用户1252055970814 分钟前
解决Stable Diffusion WebUI训练嵌入式模型报错问题
人工智能
用户83562907805115 分钟前
从手动编辑到代码生成:Python 助你高效创建 Word 文档
后端·python
Juchecar16 分钟前
一文讲清 nn.LayerNorm 层归一化
人工智能
martinzh17 分钟前
RAG系统大脑调教指南:模型选择、提示设计与质量控保一本通
人工智能
小关会打代码17 分钟前
计算机视觉案例分享之答题卡识别
人工智能·计算机视觉
Juchecar18 分钟前
一文讲清 nn.Linear 线性变换
人工智能
c8i20 分钟前
python中类的基本结构、特殊属性于MRO理解
python
Se7en25834 分钟前
使用 NVIDIA Dynamo 部署 PD 分离推理服务
人工智能