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])
相关推荐
星越华夏3 小时前
计算机视觉:YOLOv12安装环境
人工智能·yolo·计算机视觉
Yolanda945 小时前
【人工智能】《从零搭建AI问答助手项目(九):Prompt优化》
人工智能·prompt
wj3055853785 小时前
课程 9:模型测试记录与 Prompt 策略
linux·人工智能·python·comfyui
小和尚同志5 小时前
深入使用 skill-creator:结合真实生产级实践
人工智能·aigc
DevSecOps选型指南5 小时前
安全419专访悬镜安全 | 穿越周期在 AI 浪潮中定义数字供应链安全新范式
人工智能
沪漂阿龙5 小时前
面试题详解:GraphRAG 全面解析——知识图谱增强 RAG、Local Search、Global Search、社区摘要、工程落地与评估指标一次讲透
人工智能·知识图谱
WangN25 小时前
Unitree RL Lab 学习笔记【通识】
人工智能·机器学习
haina20195 小时前
海纳AI亮相《科创中国》,解码招聘“智”变之路
人工智能·ai面试·ai招聘
星寂樱易李5 小时前
iperf3 + Python-- 网络带宽、网速、网络稳定性
开发语言·网络·python
阿星AI工作室5 小时前
刘润年中大课笔记:一句话说清AI落地之战的本质
大数据·人工智能·创业创新·商业