当前位置:首页 > 神经网络 > 正文

神经网络常用的训练方式

本文目录一览

一、pytorch学习——神经网络的搭建及训练


PyTorch是开发神经网络的强大工具。 其直观的API设计简化了神经网络的构建和训练过程。 本文介绍如何使用PyTorch构建和训练基本的MLP网络。


1.网络模型构建

PyTorch的nn.Module类为构建神经网络提供了便利,例如B.构建4层、全连接、3层启用sigmoid的MLP网络。 代码如下:


classMyModel(nn.Module):
def__init__(self):
super(MyModel,self).__init__()
# 网络结构定义
defforward(self,input):
# 前向传播逻辑
nn.Module和Torch.nn.FunctionalModuleDie的继承使用使网络定义直观且强大。
2.模型训练流程

训练过程包括数据准备、损失计算和优化。 数据通常以张量的形式提供,例如B.输入张量和标签张量。 使用批量训练可以提高效率和稳定性。


2.1数据准备和损失计算

使用Torch.utils.data工具将数据批量转换,如:


forinput_data,label_dataindata_loader:
# 训练逻辑
这里的“data_loader”是一个批量读取数据的迭代器。
2.2梯度传递和优化

计算损失后,调用backward和optimizer更新梯度:


loss.backward()
optimizer.step()
3.模型预测

如果使用训练好的模型进行预测,则使用no_grad()禁用梯度跟踪:


withtorch.no_grad():
预测=模型(输入数据)

二、神经网络warmup训练技巧

训练神经网络的一个重要技巧是预热,广泛应用于训练各种模型。 它的名字大概类似于我们参加体育锻炼之前做的热身运动。 预热可以利用训练初期的学习率使模型参数收敛得更快,达到更高的精度。
众所周知,如果学习率设置太大,可能会导致梯度爆炸,也可能难以收敛到更好的部最小值,反之,如果学习率也设置得过大,则可能会导致梯度爆炸,也可能难以收敛到更好的部最小值。 ;太小的话,网络会变慢。
在训练初期,由于网络参数是随机初始化的,损失较高,导致梯度较高。 这时候我们希望学习率低一些,防止梯度爆炸;在训练过程中,我们希望学习率很高。 一是加快网络的形成。 训练结束时,我们希望网络收敛到部最小值甚至更小。 加热过程恰恰满足了这一需求。
训练开始时,预热设置了一个很低的学习率,随着训练的进行,学习率逐渐增大,最终达到正常训练的学习率。 这个阶段是热身的核心阶段。 然后,随着训练的进行,我们希望逐渐降低学习率(learningratateddecay),一旦训练完成,学习率就降到0。
预热有几个重要的参数:
事实上,任何满足第一部分设计要求的学习率更新策略都可以称为预热,这里只实现了一个。
哪里是训练步数。 我们可以看到,当时的初始学习率为;随着的增加,学习率逐渐增加。 当时的学习率就是正式训练的初始学习率。
一旦预热阶段完成,下一步就是随着训练的进行逐渐将学习率降低到0。 这里需要使用两个新的参数:
从(2)可以看出,当时,之前的参数是1,学习率是,当时,之前的参数是;0,学习率为0。 再观察一下,此时学习率线性下降到0,括号里的基总是大于0小于1,所以它的幂应该大于它本身,所以学习率会线性下降;在同一时期。 得到的学习率稍微大一些;此时的学习率低于同期的线性衰减学习率。 由于学习率最终会下降到0,因此显然应该设置为使得学习率在正式训练的初期下降得更慢,然后在正式训练结束时快速下降到0,而不是导致学习率下降学习率。 在正式训练的早期阶段学习率非常快,而在正式训练结束时学习率下降非常缓慢,减慢了训练过程。
参数:
不同步对应的学习率如下所示:
可以,在前1000步中Warmup时,学习率从1e-5快速上升到正式训练1e-2的初始学习率,然后,随着迭代步数的增加,学习率缓慢下降,最终降至0。 甚至变化率学习率(斜率)非常有趣。 在最初的预热阶段,斜率很低,学习率增缓慢,这意味着需要在一段时间内保较低的学习率。 是时候让模型更好地预热了。 在热身结束时,斜率非常陡,这意味着学习率增加非常快,以达到正式训练的初始学习率。 在初始衰减阶段,学习率缓慢下降,表明需要在一段时间内保较高的学习率以加速模型收敛。 在训练结束时,学习率迅速下降,以便模型可以收敛到更好的部最小值。
为了更好地演示上述过程,这里调整了参数(不是实际训练,实际训练时可以参考上面的各种参数配置报告)。

三、除了梯度下降法还有什么方法训练神经网络

还有很多,比如一步线算法、拟牛顿算法、量化共轭梯度法、弹性梯度下降法等。 您可以在MATLAB帮助文件训练函数中查看详细信息。 路径为:NeuralNetworkToolbox>Functions>TrainingFunctions。 可以看到函数以及各种算法的详细介绍。