1.torch.autograd
Autograd是python中的自动求导库
PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (autograd) 是 PyTorch,乃至其他大部分深度学习框架中的重要组成部分。
2.torch.optim
转自知乎:
https://zhuanlan.zhihu.com/p/349072157
torch.optim模块中,包含了大部分现在已有的流行的优化方法。
使用:
optimizer = optim.Adam(model.parameters())
创建一个optimizer对象,这个对象会保存当前的状态,并根据梯度更新参数。
作用:
根据网络反向传播的梯度信息来更新网络的参数,以起到降低loss函数计算值,
从优化器的作用出发,要使得优化器能够起作用,需要两个主要东西:
(1)优化器需要知道当前使用的是什么模型的参数空间。因此在训练文件中,正式开始训练前,需要把网络的参数放到优化器中。比如:optimizer = optim.Adam(model.parameters())。
(2)需要知道反向传播的梯度信息。
使用流程:
首先,在创建优化器对象的时候,要传入网络模型的参数,并设置学习率等优化方法的参数。然后使用函数zero_grad将梯度置为零。接着调用函数backward来进行反向传播计算梯度。最后使用优化器的step函数来更新参数。
optimizer = optim.Adam(model.parameters())
for epoch in range(num_epoches):
train_loss=0
for step,(seq, label) in enumerate(data_loader):
# 损失函数
loss = criterion(model(seq), label.to(device))
# 将梯度清零
opimizer.zero_grad()
# 损失函数backward进行反向传播梯度的计算
loss.backward()
train_loss += loss.item()
# 使用优化器的step函数来更新参数
optimizer.step()
优化算法主要分为两大类:
(1)SGD及其改进(加Momentum)
(2)逐参数适应学习率方法,包括AdaGrad,RMSProp,Adam等
3.torch.optim.adam优化算法
参数:
class Adam(Optimizer):
#Implements Adam algorithm.
def __init__(self, params, lr=1e-3, betas=(0.9, 0.999), eps=1e-8,
weight_decay=0, amsgrad=False):
params(iterable)待优化参数的iterable或者是定义了参数组的dict
lr (float,可选):学习率(步长因子),默认le-3=0.001,控制了权重的更新比率.较大的值(如0.3)在学习率更新前会有更快地初始学习,而较小的值如le-5会令训练收敛到更好的性能。
betas=[beta1,beta2],可选:用于计算梯度以及梯度平方的运行平均值的系数,默认为[0.9,0.999],beta1是一阶矩阵的指数衰减率,beta2是二阶矩阵的指数衰减率,该超参数在稀疏梯度(如在NLP或计算机视觉任务中)应该设置为接近1的数。
eps,epsion:该参数是非常小的数,为了增加数值计算的稳定性而加到分母里的项,默认le-8,为了防止在实现中除以零;
weight_decay,可选:权重衰减,L2乘法,默认0
特点:
1、结合了adagrad善于处理稀疏梯度和RMSprop善于处理非平稳目标的优点;
2、对内存需求较小
3、为不同的参数计算不同的自适应学习率
4、也适用于大多非凸优化–适用于大数据集和高维空间。
4.torch.nn.Conv2d()

5.torchvision.transforms
是pytorch中的图像预处理包(图像变换),一般用Compose把多个步骤整合到一起。
6.torch.nn
Pytorch提供了几个设计得非常棒的模块和类,比如 torch.nn,torch.optim,Dataset 以及 DataLoader,来帮助程序员设计和训练神经网络。
nn是Neural Network的简称,帮助程序员方便执行如下的与神经网络相关的行为:
(1)创建神经网络
(2)训练神经网络
(3)保存神经网络
(4)恢复神经网络
7.torch.nn.functional
nn.functional概述
nn.functional定义了创建神经网络所需要的一些常见的处理函数。如没有激活函数的神经元,各种激活函数等。
nn.functional函数分类
nn.functional包括神经网络前向和后向处理所需要到的常见函数。
(1)神经元处理函数
(2)激活函数
激活函数的案例
(1)relu案例
# nn.functional.relu( )
print(y_output)
out = nn.functional.relu(y_output)
print(out

本文详细介绍了PyTorch中的关键组件,包括自动求导库torch.autograd、优化器torch.optim(以Adam为例)、图像预处理torchvision.transforms、神经网络构建模块torch.nn及torch.nn.functional。此外,还探讨了卷积操作nn.Conv2d、全连接层nn.Linear、归一化处理nn.BatchNorm2d以及损失函数nn.MSELoss。文章深入浅出地阐述了这些概念在深度学习中的作用和使用方法。
最低0.47元/天 解锁文章
8090

被折叠的 条评论
为什么被折叠?



