炼丹宝典 | 深度学习调参tricks

hash trick在机器学习中的使用 hash trick的应用 阅读详情

作者 | 山竹小果 原文 | 文末『阅读原文』处 整理 | NewBeeNLP

寻找合适的学习率(learning rate)

学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可以做的,就是在训练中不断寻找最合适当前状态的学习率。

比如下图利用fastai中的lr_find()函数寻找合适的学习率,根据下方的学习率-损失曲线得到此时合适的学习率为1e-2。

推荐一篇fastai首席设计师「Sylvain Gugger」的一篇博客:How Do You Find A Good Learning Rate[1]

以及相关的论文Cyclical Learning Rates for Training Neural Networks[2]。

learning-rate与batch-size的关系

一般来说,越大的batch-size使用越大的学习率。

原理很简单,越大的batch-size意味着我们学习的时候,收敛方向的confidence越大,我们前进的方向更加坚定,而小的batch-size则显得比较杂乱,毫无规律性,因为相比批次大的时候,批次小的情况下无法照顾到更多的情况,所以需要小的学习率来保证不至于出错。

可以看下图损失Loss与学习率Lr的关系:

在显存足够的条件下,最好采用较大的batch-size进行训练,找到合适的学习率后,可以加快收敛速度。

另外,较大的batch-size可以避免batch normalization出现的一些小问题,参考如下Pytorch库Issue[3]

权重初始化

权重初始化相比于其他的trick来说在平常使用并不是很频繁。

因为大部分人使用的模型都是预训练模型,使用的权重都是在大型数据集上训练好的模型,当然不需要自己去初始化权重了。只有没有预训练模型的领域会自己初始化权重,或者在模型中去初始化神经网络最后那几个全连接层的权重。

常用的权重初始化算法是「kaiming_normal」或者「xavier_normal」。

相关论文:

  • Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification[4]

  • Understanding the difficulty of training deep feedforward neural networks[5]

  • Xavier初始化论文[6]

  • He初始化论文[7]

不初始化可能会减慢收敛速度,影响收敛效果。

以下  为网络的输入大小, 为网络的输出大小, 为  或

  • uniform均匀分布初始化:

  • Xavier初始法,适用于普通激活函数(tanh, sigmoid):

  • He初始化,适用于ReLU:

  • normal高斯分布初始化, 其中stdev为高斯分布的标准差,均值设为0:

  • Xavier初始法,适用于普通激活函数 (tanh,sigmoid):

  • He初始化,适用于ReLU:

  • svd初始化:对RNN有比较好的效果。参考论文:https://arxiv.org/abs/1312.6120[8]

dropout

dropout是指在深度学习网络的训练过程中,对于神经网络单元,按照一定的概率将其暂时从网络中丢弃。注意是「暂时」,对于随机梯度下降来说,由于是随机丢弃,故而每一个mini-batch都在训练不同的网络。

Dropout类似于bagging ensemble减少variance。也就是投通过投票来减少可变性。通常我们在全连接层部分使用dropout,在卷积层则不使用。但「dropout」并不适合所有的情况,不要无脑上Dropout。

Dropout一般适合于全连接层部分,而卷积层由于其参数并不是很多,所以不需要dropout,加上的话对模型的泛化能力并没有太大的影响。

我们一般在网络的最开始和结束的时候使用全连接层,而hidden layers则是网络中的卷积层。所以一般情况,在全连接层部分,采用较大概率的dropout而在卷积层采用低概率或者不采用dropout。

数据集处理

主要有「数据筛选」 以及 「数据增强」

  • fastai中的图像增强技术为什么相对比较好[9]

难例挖掘 hard-negative-mining

分析模型难以预测正确的样本,给出针对性方法。

多模型融合

Ensemble是论文刷结果的终极核武器,深度学习中一般有以下几种方式

  • 同样的参数,不同的初始化方式

  • 不同的参数,通过cross-validation,选取最好的几组

  • 同样的参数,模型训练的不同阶段,即不同迭代次数的模型。

  • 不同的模型,进行线性融合. 例如RNN和传统模型.

提高模型性能和鲁棒性大法:probs融合 和 投票法。

假设这里有model 1, model 2, model 3,可以这样融合:

1. model1 probs + model2 probs + model3 probs ==> final label

2. model1 label , model2 label , model3 label ==> voting ==> final label

3. model1_1 probs + ... + model1_n probs ==> mode1 label, model2 label与model3获取的label方式与1相同  ==> voting ==> final label

第三个方式的启发来源于,如果一个model的随机种子没有固定,多次预测得到的结果可能不同。

以上方式的效果要根据label个数,数据集规模等特征具体问题具体分析,表现可能不同,方式无非是probs融合和投票法的单独使用or结合。

差分学习率与迁移学习

首先说下迁移学习,迁移学习是一种很常见的深度学习技巧,我们利用很多预训练的经典模型直接去训练我们自己的任务。虽然说领域不同,但是在学习权重的广度方面,两个任务之间还是有联系的。

由上图,我们拿来「model A」训练好的模型权重去训练我们自己的模型权重(「Model B」),其中,modelA可能是ImageNet的预训练权重,而ModelB则是我们自己想要用来识别猫和狗的预训练权重。

那么差分学习率和迁移学习有什么关系呢?我们直接拿来其他任务的训练权重,在进行optimize的时候,如何选择适当的学习率是一个很重要的问题。

一般地,我们设计的神经网络(如下图)一般分为三个部分,输入层,隐含层和输出层,随着层数的增加,神经网络学习到的特征越抽象。因此,下图中的卷积层和全连接层的学习率也应该设置的不一样,一般来说,卷积层设置的学习率应该更低一些,而全连接层的学习率可以适当提高。

这就是差分学习率的意思,在不同的层设置不同的学习率,可以提高神经网络的训练效果,具体的介绍可以查看下方的连接。

上面的示例图来自:towardsdatascience.com/transfer-le…[10]

余弦退火(cosine annealing)和热重启的随机梯度下降

「余弦」就是类似于余弦函数的曲线,「退火」就是下降,「余弦退火」就是学习率类似余弦函数慢慢下降。

「热重启」就是在学习的过程中,「学习率」慢慢下降然后突然再「回弹」(重启)然后继续慢慢下降。

两个结合起来就是下方的学习率变化图:

更多详细的介绍可以查看知乎机器学习算法如何调参?这里有一份神经网络学习速率设置指南[11]
以及相关论文SGDR: Stochastic Gradient Descent with Warm Restarts[12]

尝试过拟合一个小数据集

这是一个经典的小trick了,但是很多人并不这样做,可以尝试一下。

关闭正则化/随机失活/数据扩充,使用训练集的一小部分,让神经网络训练几个周期。确保可以实现零损失,如果没有,那么很可能什么地方出错了。

多尺度训练

多尺度训练是一种「直接有效」的方法,通过输入不同尺度的图像数据集,因为神经网络卷积池化的特殊性,这样可以让神经网络充分地学习不同分辨率下图像的特征,可以提高机器学习的性能。

也可以用来处理过拟合效应,在图像数据集不是特别充足的情况下,可以先训练小尺寸图像,然后增大尺寸并再次训练相同模型,这样的思想在Yolo-v2的论文中也提到过:

需要注意的是:多尺度训练并不是适合所有的深度学习应用,多尺度训练可以算是特殊的数据增强方法,在图像大小这一块做了调整。如果有可能最好利用可视化代码将多尺度后的图像近距离观察一下,「看看多尺度会对图像的整体信息有没有影响」,如果对图像信息有影响的话,这样直接训练的话会误导算法导致得不到应有的结果。

Cross Validation 交叉验证

在李航的统计学方法中说到,交叉验证往往是对实际应用中「数据不充足」而采用的,基本目的就是重复使用数据。在平常中我们将所有的数据分为训练集和验证集就已经是简单的交叉验证了,可以称为1折交叉验证。「注意,交叉验证和测试集没关系,测试集是用来衡量我们的算法标准的,不参与到交叉验证中来。」

交叉验证只针对训练集和验证集。

交叉验证是Kaggle比赛中特别推崇的一种技巧,我们经常使用的是5-折(5-fold)交叉验证,将训练集分成5份,随机挑一份做验证集其余为训练集,循环5次,这种比较常见计算量也不是很大。还有一种叫做leave-one-out cross validation留一交叉验证,这种交叉验证就是n-折交叉,n表示数据集的容量,这种方法只适合数据量比较小的情况,计算量非常大的情况很少用到这种方法。

吴恩达有一节课The nuts and bolts of building applications using deep learning[13]中也提到了。

优化算法

按理说不同的优化算法适合于不同的任务,不过我们大多数采用的优化算法还是是adam和SGD+monmentum。

Adam 可以解决一堆奇奇怪怪的问题(有时 loss 降不下去,换 Adam 瞬间就好了),也可以带来一堆奇奇怪怪的问题(比如单词词频差异很大,当前 batch 没有的单词的词向量也被更新;再比如Adam和L2正则结合产生的复杂效果)。用的时候要胆大心细,万一遇到问题找各种魔改 Adam(比如 MaskedAdam[14], AdamW 啥的)抢救。

但看一些博客说adam的相比SGD,收敛快,但泛化能力差,更优结果似乎需要精调SGD。

adam,adadelta等, 在小数据上,我这里实验的效果不如sgd, sgd收敛速度会慢一些,但是最终收敛后的结果,一般都比较好。

如果使用sgd的话,可以选择从1.0或者0.1的学习率开始,隔一段时间,在验证集上检查一下,如果cost没有下降,就对学习率减半. 我看过很多论文都这么搞,我自己实验的结果也很好. 当然,也可以先用ada系列先跑,最后快收敛的时候,更换成sgd继续训练.同样也会有提升.据说adadelta一般在分类问题上效果比较好,adam在生成问题上效果比较好。

adam收敛虽快但是得到的解往往没有sgd+momentum得到的解更好,如果不考虑时间成本的话还是用sgd吧。

adam是不需要特别调lr,sgd要多花点时间调lr和initial weights。

数据预处理方式

zero-center ,这个挺常用的.

PCA whitening,这个用的比较少.

训练技巧

  • 要做梯度归一化,即算出来的梯度除以minibatch size

  • clip c(梯度裁剪): 限制最大梯度,其实是value = sqrt(w1^2+w2^2….),如果value超过了阈值,就算一个衰减系系数,让value的值等于阈值: 5,10,15

  • dropout对小数据防止过拟合有很好的效果,值一般设为0.5

    • 小数据上dropout+sgd在我的大部分实验中,效果提升都非常明显.因此可能的话,建议一定要尝试一下。

  • dropout的位置比较有讲究, 对于RNN,建议放到输入->RNN与RNN->输出的位置.关于RNN如何用dropout,可以参考这篇论文:http://arxiv.org/abs/1409.2329[15]

  • 除了gate之类的地方,需要把输出限制成0-1之外,尽量不要用sigmoid,可以用tanh或者relu之类的激活函数.

    • sigmoid函数在-4到4的区间里,才有较大的梯度。之外的区间,梯度接近0,很容易造成梯度消失问题。

    • 输入0均值,sigmoid函数的输出不是0均值的。

  • rnn的dim和embdding size,一般从128上下开始调整. batch size,一般从128左右开始调整. batch size合适最重要,并不是越大越好.

  • word2vec初始化,在小数据上,不仅可以有效提高收敛速度,也可以可以提高结果.

  • 尽量对数据做shuffle

  • LSTM 的forget gate的bias,用1.0或者更大的值做初始化,可以取得更好的结果,来自这篇论文:http://jmlr.org/proceedings/papers/v37/jozefowicz15.pdf[16], 我这里实验设成1.0,可以提高收敛速度.实际使用中,不同的任务,可能需要尝试不同的值.

  • Batch Normalization据说可以提升效果,参考论文:Accelerating Deep Network Training by Reducing Internal Covariate Shift

  • 如果你的模型包含全连接层(MLP),并且输入和输出大小一样,可以考虑将MLP替换成Highway Network,我尝试对结果有一点提升,建议作为最后提升模型的手段,原理很简单,就是给输出加了一个gate来控制信息的流动,详细介绍请参考论文: http://arxiv.org/abs/1505.00387[17]

  • 来自@张馨宇的技巧:一轮加正则,一轮不加正则,反复进行。

  • 在数据集很大的情况下,一上来就跑全量数据。建议先用 1/100、1/10 的数据跑一跑,对模型性能和训练时间有个底,外推一下全量数据到底需要跑多久。在没有足够的信心前不做大规模实验。

  • subword 总是会很稳定地涨点,只管用就对了。

  • GPU 上报错时尽量放在 CPU 上重跑,错误信息更友好。例如 GPU 报 "ERROR:tensorflow:Model diverged with loss = NaN" 其实很有可能是输入 ID 超出了 softmax 词表的范围。

  • 在确定初始学习率的时候,从一个很小的值(例如 1e-7)开始,然后每一步指数增大学习率(例如扩大1.05 倍)进行训练。训练几百步应该能观察到损失函数随训练步数呈对勾形,选择损失下降最快那一段的学习率即可。

  • 补充一个rnn trick,仍然是不考虑时间成本的情况下,batch size=1是一个很不错的regularizer, 起码在某些task上,这也有可能是很多人无法复现alex graves实验结果的原因之一,因为他总是把batch size设成1。

  • 注意实验的可复现性和一致性,注意养成良好的实验记录习惯 ==> 不然如何分析出实验结论。

  • 超参上,learning rate 最重要,推荐了解 cosine learning rate 和 cyclic learning rate,其次是 batchsize 和 weight decay。当你的模型还不错的时候,可以试着做数据增广和改损失函数锦上添花了。

参考:

  • 关于训练神经网路的诸多技巧Tricks\(完全总结版\)[18]

  • 你有哪些deep learning(rnn、cnn)调参的经验?[19]

  • Bag of Tricks for Image Classification with Convolutional Neural Networks[20],trick 合集 1。

  • Must Know Tips/Tricks in Deep Neural Networks[21],trick 合集 2。

  • 33条神经网络训练秘技[22],trick 合集 3。

  • 26秒单GPU训练CIFAR10[23],工程实践。

  • Batch Normalization[24],虽然玄学,但是养活了很多炼丹师。

  • Searching for Activation Functions[25],swish 激活函数。

本文参考资料

[1]

How Do You Find A Good Learning Rate: https://sgugger.github.io/how-do-you-find-a-good-learning-rate.html

[2]

Cyclical Learning Rates for Training Neural Networks: https://arxiv.org/abs/1506.01186

[3]

Pytorch库Issue: https://github.com/pytorch/pytorch/issues/4534

[4]

Delving deep into rectifiers: Surpassing human-level performance on ImageNet classification: https://www.cv-foundation.org/openaccess/content_iccv_2015/papers/He_Delving_Deep_into_ICCV_2015_paper.pdf

[5]

Understanding the difficulty of training deep feedforward neural networks: http://proceedings.mlr.press/v9/glorot10a.html

[6]

Xavier初始化论文: http://proceedings.mlr.press/v9/glorot10a/glorot10a.pdf

[7]

He初始化论文: https://arxiv.org/abs/1502.01852

[8]

https://arxiv.org/abs/1312.6120: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1312.6120

[9]

fastai中的图像增强技术为什么相对比较好: https://oldpan.me/archives/fastai-1-0-quick-study

[10]

towardsdatascience.com/transfer-le…: https://towardsdatascience.com/transfer-learning-using-differential-learning-rates-638455797f00

[11]

机器学习算法如何调参?这里有一份神经网络学习速率设置指南: https://zhuanlan.zhihu.com/p/34236769

[12]

SGDR: Stochastic Gradient Descent with Warm Restarts: https://arxiv.org/abs/1608.03983

[13]

The nuts and bolts of building applications using deep learning: https://www.youtube.com/watch?v=F1ka6a13S9I

[14]

MaskedAdam: https://www.zhihu.com/question/265357659/answer/580469438

[15]

http://arxiv.org/abs/1409.2329: https://link.zhihu.com/?target=http%3A//arxiv.org/abs/1409.2329

[16]

http://jmlr.org/proceedings/papers/v37/jozefowicz15.pdf: https://link.zhihu.com/?target=http%3A//jmlr.org/proceedings/papers/v37/jozefowicz15.pdf

[17]

http://arxiv.org/abs/1505.00387: https://link.zhihu.com/?target=http%3A//arxiv.org/abs/1505.00387

[18]

关于训练神经网路的诸多技巧Tricks(完全总结版): https://juejin.im/post/5be5b0d7e51d4543b365da51

[19]

你有哪些deep learning(rnn、cnn)调参的经验?: https://www.zhihu.com/question/41631631

[20]

Bag of Tricks for Image Classification with Convolutional Neural Networks: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1812.01187

[21]

Must Know Tips/Tricks in Deep Neural Networks: https://link.zhihu.com/?target=http%3A//lamda.nju.edu.cn/weixs/project/CNNTricks/CNNTricks.html

[22]

33条神经网络训练秘技: https://zhuanlan.zhihu.com/p/63841572

[23]

26秒单GPU训练CIFAR10: https://zhuanlan.zhihu.com/p/79020733

[24]

Batch Normalization: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1502.03167%3Fcontext%3Dcs

[25]

Searching for Activation Functions: https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1710.05941

- END -



深度学习经典trick汇总 trick这个词或许有投机取巧的意味,但深度学习论文中出现的很多这个trick确实对模型更方面性能有所提高,而且它们中的很多还具有普适性,那么这种“trick“或许应该被叫做“技术”。 阅读详情

相关推荐

如何利用DeepSeek自动生成PLC程序?

在工业自动化领域,PLC是核心控制设备,其编程效率和质量直接影响生产线的运行效果。 然而,传统PLC编程依赖工程师手动编写代码,不仅耗时耗力,还容易出错。通过自动生成PLC程序,DeepSeek不仅大幅提升了编程效率,还优化了代码质量。 那么DeepSeek到底能否自动生成PLC程序呢? 有位电气工程师就尝试让DeepSeek设计一套五层电梯控制系统的PLC程序,下面就让我们看看吧。 技术原理:DeepSeek如何实现自动编程DeepSeek利用自然语言处理技术,将工程师输入的文本指令转换为PLC代码。例

Qinmingyue13的博客 6172

一文总结调参技巧

调参数是深度学习工作中,必不可少的一步。 “得参数者,得天下“ 那么,调参的方法常见的有哪些?小编为您总结一番~ 01寻找合适的学习率(learning rate) 学习率是一个非常非常重要的超参数在面对不同规模、不同batch-size、不同优化方式、不同数据集时,学习率的最合适的值都是不确定的,所以,我们无法光凭经验来准确地确定学习率的值。策略:在训练中不断寻找最合适当前状态的学习率。下图利用fastai中的lr_find()函数寻找合适的学习率,根据下方的学习率-损失曲线得到此时合适的学习率为

浩瀚之水的专栏 6363

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

基于若依的ruoyi-nbcio-plus支持VForm3表单字段数据保存到数据库的一种方法——全网首创(一)

宁波阿成的博客 658

谷歌深度学习调参手册(提炼,理解,总结)

深度学习调参,系统整理,谷歌大脑YYDS

laiwenjie1988的专栏 2377

FineReport 动态列切换统计维度

目标: 自己选择统计维度进行数据的汇总统计数据集参数实现动态列。

Davina_yu的博客 1053

【漏洞复现】用友NC-Cloud-反序列化-ResourceManagerServlet

NC Cloud是用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。NC Cloud完全基于云原生架构,技术先进、性能稳定、自主安全可控,支撑大中型以及超大型集团企业N层多site混合云部署方案,支持整个系统高可用、弹性扩展、双/多活,以及快速灾备恢复能力等。用友-NC-Cloud ResourceManagerServlet 接口存在反序列化漏洞,使得攻击者可以通过构造特定的请求远程执行恶意代码。此漏洞可能导致攻击者获取系统权限、执行任意命令,严重威胁系统的机密性和完整性。

漏洞复现 1364

Deep Learning Tuning Playbook(深度学习调参手册中译版)

由五名研究人员和工程师组成的团队发布了《Deep Learning Tuning Playbook》,本文对手册进行了中文翻译

qq_20144897的博客 1万+

点到面点云配准(Point To Plane)算法知识详解和详细推导,C++代码实现

点到面 ICP (Iterative Closest Point) 是在 3D 点云配准中常见的一种变体,通过最小化点到对应面(由法向量定义的局部平面)的距离来提高收敛速度和精度。

qq_36812406的博客 1808

深度学习调参手册(一):项目初始化与batchsize

深度学习的调参,是一个说重要也不重要,说不重要却又很重要的事。在深度学习相关教科书中,大多倾向于回避实验指导,着重讲解理论、概念等基本原则;在公开发表的深度学习论文实验中,大多跳过了实验繁杂的调参过程,仅呈现出一个干净的结果;而业界的深度学习工程师也很少有时间或意愿,向外界讲述他们的调参过程。对于大多数初入深度学习领域的同学可能需要花费大量的时间重复在毫无理论依据的调参过程中。即使使用了与领域内专家表面上类似的模型或方法,但取得的结果间却可能也存在着巨大的差距。

RicardoOzZ的博客 664

基于STM32L4XX 、HAL库的ATD5984步进电机驱动器驱动程序应用设计

一、简介: ATD5984是一款内部集成了译码器的微特步进电机 驱动器,能使双极步进电机以全、半、1/4、/1/8、1/16 和1/32步进模式工作。步进模式由逻辑输入管脚MSx选 择。其输出驱动能力达到28V±1.6A。 译码器是ATD5984易于使用的关键,通过STEP管脚 输入一个脉冲就可以使电机完成一次步进,省去了相序 表,高频控制线及复杂的编程接口,使其更适于没有复 杂的微处理器或微处理器负担过重的场合。 在步进操作期间,ATD5984的内部电路可以自动

PP_Cottage的博客 404

基于YOLOv8的建筑材料分类系统:从数据集构建到UI界面实现

建筑材料分类数据集需要包含各种常见建筑材料的图像,并对每种材料进行标注。砖块(Brick)混凝土(Concrete)钢筋(Rebar)木材(Wood)瓷砖(Tile)玻璃(Glass)钢材(Steel)塑料(Plastic)石膏板(Drywall)绝缘材料(Insulation)如果没有找到合适的公开数据集,可以构建自己的数据集。使用智能手机或专业相机拍摄各种建筑材料的照片确保在不同光照条件、角度和背景下拍摄每类材料至少收集300-500张图像。

YOLO 488

大语言模型超参数入门调参手册

在人工智能的广阔天地中,大语言模型(LLM)正以其强大的能力,不断刷新我们对机器理解语言的认知。然而,要使这些模型在特定应用场景下发挥最大效能,关键在于如何巧妙地调整其超参数。

2401_82469710的博客 3903

CMOS图像传感器——Remosaic技术

对remosaic技术进行了介绍

沧海一升的博客 9580

炼丹宝典 | Deep Learning 调参 tricks

作者| 山竹小果原文 |文末『阅读原文』处整理| NewBeeNLP公众号 重点说明:本文主要为整理总结,大部分参考文末资料,感谢分享。寻找合适的学习率(learning rate)...

abcdefg90876的博客 235

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python学习——deep learning tricks

炼丹宝典 | 整理 Deep Learning 调参 tricks

m0_37876745的博客 239

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

深度学习模型训练调参的tricks总结

学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可以做的,就是在训练中不断寻找最合适当前状态的学习率。比如下图利用fastai中的lr_find()函数寻找合适的学习率,根据下方的学习率-损失曲线得到此时合适的学习率为1e-2。

ytusdc的博客 7879

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

深度分割模型比赛训练技巧(Tricks)

深度分割模型训练技巧(Tricks)深度分割模型训练技巧(Tricks)深度分割模型训练技巧(Tricks)

Major_S的博客 4017

第2篇 Fast AI深度学习课程——图像分类网络调优

在第一节课中,在Dogs vs. Cats数据集上,设置了一个ResNet34的网络,并通过学习速率选取方法,以及设置数据遍历次数为2,获得了一个准确率如下的网络: Epoch trn_loss val_loss accuracy 0 0.052014 0.028396 0.99 1 0.049761 0.028705 0.9885...

suredied的博客 7148

深度学习调参(炼丹)指南来了!

Datawhale干货方向:深度学习调参,编辑:机器之心「大量的实践经验已被提炼成这份强大的深度学习模型调参指南。」——Geoffrey Hinton。众所周知,AI 的超参数决定着模型学习效果和速度。相比普通机器学习任务,深度学习需要的训练时间较长,因此调参技巧就显得尤为重要。但鉴于深度学习「炼丹」的特性,不同的模型需要不同的超参数,而每个超参的意义又不同,在不同实验中,参数和调整的方向又都...

Datawhale 1868

人工智能:深度学习算法及应用——简单理解CNN卷积神经网络并python实现(带源码)

实验四:深度学习算法及应用一、 实验目的二、 实验要求三、 实验的硬件、软件平台四、 实验原理1.1. 深度学习概述1.2. 深度学习的常见结构1.3. 卷积神经网络(CNN)**卷积****池化**全连接网络1.4. 卷积神经网络的大致结构1.5. 参数学习五、 实验内容与步骤1. 深度学习工具安装1.1. 使用pip命令安装tensorflow-gpu 1.9.01.2. 下载安装CUDA Toolkit 9.01.3. 下载cuDDN7.1.43. CNN设计4. 具体实现**最后,主要的学习过程如下

weixin_43973089的博客 2万+

第六篇 FastAI的回调系统

前一篇博文介绍了如何在Fast AI框架下构建学习器。那么接下来就是训练模型。在训练过程中,往往需要在一些特定的阶段做一些特殊的操作,如在每训练一定数目的batch后,对学习速率进行调整;或是每训练一个epoch后,需要记录网络在验证(validation)数据集上的某些输出,如在validation上的loss,或者一些其他想观察的指标(metrics)。这些都是通过Fast AI的回调(Cal...

suredied的博客 2449

21个深度学习调参技巧,一定要看到最后一个

点击上方“AI算法与图像处理”,选择加"星标"或“置顶”重磅干货,第一时间送达这篇文章在国外知名的网站medium上面获得了一千多的赞,给出了很多建议,同时也备注了论...

zero的博客 1266

深度学习调参大法

深度学习调参大法

Joker 007的博客 2048

深度学习知识点训练技巧总结

2、防止过拟合(overfit)的方法 正则化:即在对模型的目标函数(objective function)或代价函数(cost function)加上正则项。 (L1正则与L2正则) 提前停止迭代:当迭代过程中准确率不再上升时停止,或者是损失函数停止下降的时候。 dropout:在每次训练过程中随机将部分神经元的权重置为0,即让一些神经元失效,这样可以缩减参数量。 数据集增广:重采样、加噪音、...

weixin_44474718的博客 1520

深度学习调参trick 调参技巧

深度学习调参trick 调参技巧

1935

深度学习调参tricks总结!

点击上方“小白学视觉”,选择加"星标"或“置顶”重磅干货,第一时间送达 作者:山竹小果,来源:NewBeeNLP寻找合适的学习率(learning rate)学习率是一个非常非常重要的超参数,这个参数呢,面对不同规模、不同batch-size、不同优化方式、不同数据集,其最合适的值都是不确定的,我们无法光凭经验来准确地确定lr的值,我们唯一可以做的,就是在训练中不断寻找最合适当前状态的学习率。比如...

小白学视觉 520
上一篇: 【学术】直博和读完硕士再读博,在能力上的差距有多大?
下一篇: Python 之父爆料:明年至少令 Python 提速 1 倍!
机器学习算法那些事
博客等级 码龄9年 1633粉丝 62原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值