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])
相关推荐
m0_751336391 小时前
突破性进展:超短等离子体脉冲实现单电子量子干涉,为飞行量子比特奠定基础
人工智能·深度学习·量子计算·材料科学·光子器件·光子学·无线电电子
美狐美颜sdk4 小时前
跨平台直播美颜SDK集成实录:Android/iOS如何适配贴纸功能
android·人工智能·ios·架构·音视频·美颜sdk·第三方美颜sdk
DeepSeek-大模型系统教程4 小时前
推荐 7 个本周 yyds 的 GitHub 项目。
人工智能·ai·语言模型·大模型·github·ai大模型·大模型学习
郭庆汝5 小时前
pytorch、torchvision与python版本对应关系
人工智能·pytorch·python
小雷FansUnion7 小时前
深入理解MCP架构:智能服务编排、上下文管理与动态路由实战
人工智能·架构·大模型·mcp
资讯分享周7 小时前
扣子空间PPT生产力升级:AI智能生成与多模态创作新时代
人工智能·powerpoint
思则变8 小时前
[Pytest] [Part 2]增加 log功能
开发语言·python·pytest
叶子爱分享8 小时前
计算机视觉与图像处理的关系
图像处理·人工智能·计算机视觉
鱼摆摆拜拜8 小时前
第 3 章:神经网络如何学习
人工智能·神经网络·学习
一只鹿鹿鹿8 小时前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程