在源码之家下载的网站模板可以作为自己的网站吗,济源建设网站的公司,北京app软件开发,郑州网站建设学校学习目的#xff1a;掌握自动微分模块的使用
训练神经网络时#xff0c;最常用的算法就是反向传播。在该算法中#xff0c;参数#xff08;模型权重#xff09;会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度#xff0c;PyTorch 内置了名为 torch.autogra…学习目的掌握自动微分模块的使用
训练神经网络时最常用的算法就是反向传播。在该算法中参数模型权重会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度PyTorch 内置了名为 torch.autograd的微分引擎。它支持任意计算图的自动梯度计算
接下来我们使用这个结构进行自动微分模块的介绍。我们使用 backward 方法、grad 属性来实现梯度的计算和访问。 当X为标量时梯度的计算 import torch
# 1. 当X为标量时梯度的计算
def test01():x torch.tensor(5)# 目标值y torch.tensor(0.)# 设置要更新的权重和偏置的初始值w torch.tensor(1.0,requires_gradTrue,dtypetorch.float32)b torch.tensor(3.0,requires_gradTrue,dtypetorch.float32)#设置网络的输出值z x*w b #矩阵乘法# 设置损失函数并进行损失计算loss torch.nn.MSELoss()loss loss(z,y)# 自动微分loss.backward()# 打印wb变量的梯度# backward 函数计算的梯度值会存储在张量的grad 变量中print(W的梯度,w.grad)print(B的梯度,b.grad)test01()输出结果 W的梯度 tensor(80.)
B的梯度 tensor(16.)当X为多维张量时梯度计算 import torch
def test02():# 输入张量 2*5x torch.ones(2,5)# 目标张量 2*3y torch.zeros(2,3)# 设置要更新的权重和偏置的初始值w torch.randn(5,3,requires_gradTrue)b torch.randn(3,requires_gradTrue)#设置网络的输出值z torch.matmul(x,w) b #矩阵乘法# 设置损失函数并进行损失计算loss torch.nn.MSELoss()loss loss(z,y)# 自动微分loss.backward()# 打印wb变量的梯度# backward 函数计算的梯度值会存储在张量的grad 变量中print(W的梯度,w.grad)print(B的梯度,b.grad)test02()输出结果 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])