首页 > 其他分享 >深度神经网络调优

深度神经网络调优

时间:2023-08-07 12:33:55浏览次数:36  
标签:训练 模型 batch 神经网络 调优 参数 深度 步数 size

1.选择合适的模型架构

总结:当开始一个新的工程时,试着复用已经有效果的模型

1)首先,选择一个已经被广泛使用和建立起来的模型架构来先让其正常工作。可以在以后再建立一个定制化的模型。

2)模型架构一般都具有多种超参数,这些超参数决定了模型的尺寸和其他一些细节(如,层数,层 宽,激活函数的类型),因此选择一个架构,实际意味着选择一系列不同的模型         (一个模型架构对应的一系列超参 数的设置即为一族),我们将在选择初始配置和一个提升模型性能的科学方法中研究如何选择模型超参数的问题。

3)如果可能的话,试着寻找一篇与手头工作尽可能接近的论文,并复现该模型作为开始

 

2.选择优化器

总结:针对手头的问题,先从最流行的优化器开始

1)对于所有类型的机器学习问题和模型架构,没有哪个优化器是最优的。甚至,比较不同优化器也是 个困难的任务。

2)推荐稳健的流行的优化器,特别是当开始一个新的工程。 理想的是选择处理相同类型的问题时最流行的优化器。 应对所选择的优化器的所有超参数给予重视。

具有更多超参数的优化器可能需要更多的调节努力来寻找最佳设置。 这在项目的开始阶段尤其重要,因为我们正试图找到其他各种超参数(如架构超参数)的最佳值,同时将优化器超参数视为干扰参数。

 

3.选择batch size

总结:batch size控制着训练速度,不应被用于直接调节验证集的性能。通常,理想的batch size是现有硬件所支持的最大的batch size。

1)batch size是决定训练时间和计算资源消耗的关键参数

2)增加batch size通常可以降低训练时间。这是非常有用的,(因为: 在固定的时间间隔内,使得超参数可以被调节更彻底,潜在地导致更好的最终模型。 减小开发周期的等待时间,使得新的想法能够更频繁地被测试)

3)增加batch size可能会降低、增加或不改变资源消耗。

4)batch size不该被视作用于改变验证集性能的可调节超参数。 只要所有超参数已经被很好地调节(特别是学习速率和正则化超参数),以及训练步数是足够的,那么,对于任意batch size都能得到相同的最终性能(see Shallue et al. 2018)。

 

4.确定可行的batch size和估计训练吞吐量(throughput)

1)对于给定的模型和优化器,可用的硬件一般支持一定范围的batch size。这限制因素通常为加速器 (如图形处理器GPU和张量处理器TPU)的内存。不幸的是,如果没有运行完整的训练程序(或至少编译),很难计算哪些batch size适合内存。

最简单的解决方法,通常是用较少步数分别训练一系列不同batch size(例如,增加2的幂),直到其中一个job超过了现有内存。

2)对于每个batch size,我们应该训练足够长的时间来获得对训练吞吐量的可靠估计。

当加速器还没达到饱和,如果加倍batch size,则训练吞吐量也应加倍(或至少接近加倍)。相当 于,当batch size增加,每一步的时长应为恒值(至少近似恒值)

如果不是这种情况,那么训练管道会有其他瓶颈,如,IO或在计算节点间的同步。这值得在下一 步进行之前先诊断和修正。

如果训练吞吐量只增加到某个最大batch size大小,那么我们应该只考虑小于这个最大batch size 的batch size,即使硬件支持更大的batch size。

3)使用更大的batch size的好处是基于训练吞吐量会增加。如果没有满足这种假设,那么应修复 这些瓶颈或使用更小的batch size。 梯度累加模拟比硬件支持的最大batch size,因此,不会得到任何吞吐量的好处。这一般在实 际工作中应避免。 这些步骤可能在每次模型或优化器发生改变时都要重复进行(如,不同的模型架构可能运行更大的 batch size适合内存)

 

5.选择batch size来使得训练时间最小化

1)我们通常可以认为,对于所有可行的batch size,每个step的时间都是近似恒定的 (see the previous section关于如何鉴定训练瓶颈)。当并行计算没有开销并且所有训练瓶颈都已被诊断和纠正时,这是正确的。实际上,增加batch size通常至少会产生一些开销。

2)随着batch size的增加,达到固定性能目标所需的步数通常会减少(前提是当批量大小改变时,所 有相关的超参数都会重新调整;Shallue et al. 2018)

例如,加倍batch size可能会使得所需步数减半。这被称为是完美尺度化(perfect scaling)。 在达到临界batch size之前,完美尺度化对所有batch size都是成立的;超过该临界值后,得到的收益将递减。 最终,增加batch size不再减少训练所需步数(但从不会增加步数)。
因此,最小化训练时间的batch size,通常是仍能减小所需的训练步数的最大的batch size。

通常,可用硬件所支持的最大batch size会比临界batch size要小一些。因此,一个很好的经 验法则是(没有跑任何实验)尽可能使用最大的batch size。

 

标签:训练,模型,batch,神经网络,调优,参数,深度,步数,size
From: https://www.cnblogs.com/pass-ion/p/17611137.html

相关文章

  • 深度学习框架 —— 分布式训练
    现在深度学习的模型结构越来越大,参数动不动都是上亿甚至上千亿,这也对训练模型的资源量有很高的要求,显然单个机器上要训练这么大的网络是不现实的,因此学术界和工业界自然开始研究用分布式训练。也就是将一个机器学习模型任务拆分成多个子任务,并将子任务分发给多个计算节点,解决资源......
  • 星融元:DPU替代网络可视化专用设备实现业务报文深度处理
    网络可视化中的深度业务处理网络可视化场景中,通常需要将采集过来的数据经过深度业务处理后再交给后端分析系统。这些深度业务处理功能包括:传统的深度业务处理通常由带CPU的框式设备完成,但框式设备成本高、功耗大、扩展不够灵活的种种给客户带来了极大的困扰。DPU算力的池化应用Heli......
  • 论文分析|利用图神经网络挖掘群组信息进行个性化推荐
    ExploitingGroupInformationforPersonalizedRecommendationwithGraphNeuralNetworks论文分析初步论文分析推荐系统的关键问题是如何对用户偏好进行建模。已有工作大多利用用户历史数据学习用户偏好,但面临数据稀疏问题。在线社交网络的流行促进了在线讨论组的增加,同一......
  • 深度学习—线性回归预测销售额
    (深度学习—线性回归预测销售额)前提进行程序训练之前,需已经成功安装好深度学习环境若没有安装环境,可以参考:深度学习环境安装教程,进行环境安装。一、简介机器学习是人工智能的核心,是使计算机具有智能的根本途径。线性回归模型是机器学习中最简单、最基础的一类有监督学习模型......
  • 神经网络可视化工具
    目录1.pipinstallonnx2.根据以下脚本把.pt文件转换成.onnx文件3.在网页打开onnx文件进行可视化展示使用onnx工具能可视化的展示神经网络的结构,便于理解和学习。1.pipinstallonnx2.根据以下脚本把.pt文件转换成.onnx文件"""ExportsaYOLOv5*.ptmodeltoONNXandTorc......
  • 深度 Q 网络(deep Q network,DQN)原理&实现
    深度Q网络(deepQnetwork,DQN)原理&实现1Q-Learning算法1.1算法过程Q-learning是一种用于解决强化学习问题的无模型算法。强化学习是一种让智能体学习如何在环境中采取行动以最大化某种累积奖励的机器学习方法。在Q-learning中,智能体根据称为Q-values的函数来选择行动。Q-v......
  • AlexNet深度卷积神经网络——pytorch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lnet=nn.Sequential(#(224-11+1+2)/4=54nn.Conv2d(1,96,kernel_size=11,stride=4,padding=1),nn.ReLU(),#(54-3+1)/2=26nn.MaxPool2d(kernel_size=3,stride=2),#(26+4-5+1)=26......
  • LeNet卷积神经网络——pytorch版
    importtorchfromtorchimportnnfromd2limporttorchasd2lclassReshape(torch.nn.Module):defforward(self,x):#批量大小默认,输出通道为1returnx.view(-1,1,28,28)net=torch.nn.Sequential(#28+4-5+1=28输出通道为6Reshape()......
  • 深度学习编译器前端技术概述
    AI编译器在前端经常会做一些静态分析,方便在前端做一些优化:自动微分等。中间表示(IntermediateRepresentation,IR)IR是编译器用于表示源代码的数据结构或代码,是程序编译过程中介于源语言和目标语言之间的程序表示。几乎所有的编译器都需要某种形式的中间表示,来对被分析、转换......
  • 002-深度学习数学基础(神经网络、梯度下降、损失函数)
    0.前言人工智能可以归结于一句话:针对特定的任务,找出合适的数学表达式,然后一直优化表达式,直到这个表达式可以用来预测未来。针对特定的任务:首先我们需要知道的是,人工智能其实就是为了让计算机看起来像人一样智能,为什么这么说呢?举一个人工智能的例子:我们人看到一个动物的图片,就......