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])
相关推荐
coderCatIce11 分钟前
刘二大人第2讲-线性模型-带代码以及作业答案
人工智能·机器学习
帅夫帅夫12 分钟前
Vibe Coding从零开始教你打造一个WebLLM页面
前端·人工智能
抽风的雨61012 分钟前
【python深度学习】Day 45 Tensorboard使用介绍
人工智能·深度学习
红衣信20 分钟前
探索 DeepSeek:智能前端与大模型的碰撞
前端·人工智能·llm
Hockor24 分钟前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
姚瑞南25 分钟前
【Prompt实战】国际翻译小组
人工智能·prompt·gpt-3·文心一言·机器翻译
网安小张27 分钟前
解锁FastAPI与MongoDB聚合管道的性能奥秘
数据库·python·django
GeekAGI28 分钟前
Python 定时器框架
python
Jamence1 小时前
多模态大语言模型arxiv论文略读(109)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记