pytorch相关知识点总结

本文详细介绍了PyTorch中的关键组件,包括自动求导库torch.autograd、优化器torch.optim(以Adam为例)、图像预处理torchvision.transforms、神经网络构建模块torch.nn及torch.nn.functional。此外,还探讨了卷积操作nn.Conv2d、全连接层nn.Linear、归一化处理nn.BatchNorm2d以及损失函数nn.MSELoss。文章深入浅出地阐述了这些概念在深度学习中的作用和使用方法。
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
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值