CNN训练中的技巧

转自:

http://weibo.com/p/1001603816330729006673

翻译网上的哈,我觉得有很大一部分从没看到过,所以就翻译了下,如有不对的地方,欢迎指正:

1:准备数据:务必保证有大量、高质量并且带有干净标签的数据,没有如此的数据,学习是不可能的

2:预处理:这个不多说,就是0均值和1方差化

3:minibatch:建议值128,1最好,但是效率不高,但是千万不要用过大的数值,否则很容易过拟合

4:梯度归一化:其实就是计算出来梯度之后,要除以minibatch的数量。这个不多解释

5:下面主要集中说下学习率

5.1:总的来说是用一个一般的学习率开始,然后逐渐的减小它

5.2:一个建议值是0.1,适用于很多NN的问题,一般倾向于小一点。

5.3:一个对于调度学习率的建议:如果在验证集上性能不再增加就让学习率除以2或者5,然后继续,学习率会一直变得很小,到最后就可以停止训练了。

5.4:很多人用的一个设计学习率的原则就是监测一个比率(每次更新梯度的norm除以当前weight的norm),如果这个比率在10-3附近,如果小于这个值,学习会很慢,如果大于这个值,那么学习很不稳定,由此会带来失败。

6:使用验证集,可以知道什么时候开始降低学习率,和什么时候停止训练。

7:关于对weight初始化的选择的一些建议:

7.1:如果你很懒,直接用0.02*randn(num_params)来初始化,当然别的值你也可以去尝试

7.2:如果上面那个不太好使,那么久依次初始化每一个weight矩阵用init_scale / sqrt(layer_width) * randn,init_scale可以被设置为0.1或者1

7.3:初始化参数对结果的影响至关重要,要引起重视。

7.4:在深度网络中,随机初始化权重,使用SGD的话一般处理的都不好,这是因为初始化的权重太小了。这种情况下对于浅层网络有效,但是当足够深的时候就不行了,因为weight更新的时候,是靠很多weight相乘的,越乘越小,有点类似梯度消失的意思(这句话是我加的)

8:如果训练RNN或者LSTM,务必保证gradient的norm被约束在15或者5(前提还是要先归一化gradient),这一点在RNN和LSTM中很重要。

9:检查下梯度,如果是你自己计算的梯度。

10:如果使用LSTM来解决长时依赖的问题,记得初始化bias的时候要大一点

12:尽可能想办法多的扩增训练数据,如果使用的是图像数据,不妨对图像做一点扭转啊之类的,来扩充数据训练集合。

13:使用dropout

14:评价最终结果的时候,多做几次,然后平均一下他们的结果。

时间: 2024-10-05 23:27:33

CNN训练中的技巧的相关文章

CNN训练Cifar-10技巧

关于数据集 Cifar-10是由Hinton的两个大弟子Alex Krizhevsky.Ilya Sutskever收集的一个用于普适物体识别的数据集.Cifar是加拿大牵头投资的一个先进科学项目研究所. 说白了,就是看你穷的没钱搞研究,就施舍给你.Hinton.Bengio和他的学生在2004年拿到了Cifar投资的少量资金,建立了神经计算和自适应感知项目. 这个项目结集了不少计算机科学家.生物学家.电气工程师.神经科学家.物理学家.心理学家,加速推动了DL的进程.从这个阵容来看,DL已经和M

神经网络训练中的Tricks之高效BP(反向传播算法)

神经网络训练中的Tricks之高效BP(反向传播算法) 神经网络训练中的Tricks之高效BP(反向传播算法) [email protected] http://blog.csdn.net/zouxy09 Tricks!这是一个让人听了充满神秘和好奇的词.对于我们这些所谓的尝试应用机器学习技术解决某些问题的人,更是如此.曾记得,我们绞尽脑汁,搓手顿足,大喊“为什么我跑的模型不work?”,“为什么我实现的效果那么差?”,“为什么我复现的结果没有他论文里面说的那么好?”.有人会和你说“你不懂调参!

EditPuls3.6中使用技巧(2)

1) 查看括号:选中"{"或"(",同时按Ctrl+],即可 2)设置背景色:点击工具栏上的"文档D" -->固定设置值P -->常规 / 颜色-->背景色,如下: 3)列选择:Alt+C 或点击"编辑"-->选择 / 列选择--->用鼠标拖曳后,按Del键删除所选内容. 例如,删除.lrc文件中的时间记录,如下: 按Del键,效果如下: 4)查找要匹配的htm标签: Ctrl+[ EditPul

U盘在虚拟机中打开技巧

00.把U盘插到你的真机上, 01.打开你的虚拟机XP系统,02.点上面的虚拟机选项(下拉)--可移动设备--USB设备--U盘--USB设备 点击连接他,一会真机的U盘就到了虚拟机里面!!! 00.没加载U盘前 01.设置步骤 002.U盘加载完成,看见U盘 日记千里,回首一望. U盘在虚拟机中打开技巧

Hulu机器学习问题与解答系列 | 二十三:神经网络训练中的批量归一化

来看看批量归一化的有关问题吧!记得进入公号菜单"机器学习",复习之前的系列文章噢. 今天的内容是 [神经网络训练中的批量归一化] 场景描述 深度神经网络的训练中涉及诸多手调参数,如学习率,权重衰减系数,Dropout比例等,这些参数的选择会显著影响模型最终的训练效果.批量归一化(Batch Normalization, BN)方法从数据分布入手,有效减弱了这些复杂参数对网络训练产生的影响,在加速训练收敛的同时也提升了网络的泛化能力. 问题描述 BN基本动机与原理是什么? BN的具体实现

机器学习数学基础及CNN训练注意事项

KKT理解: https://www.cnblogs.com/pursued-deer/p/7858122.html Numpy :  CNN训练相关: 贝塔和伽玛是网络学出来的 上一层的输出先求均值,在求方差,然后每个输出给它搞成正太分布 让一部分神经元随机失活 CNN推展案例: R-CNN FAST-rcnn 原文地址:https://www.cnblogs.com/fenglivoong/p/12559327.html

fine-tuning:预训练中的迁移

什么是fine-tuning? 概述 在实践中,由于数据集不够大,很少有人从头开始训练网络.常见的做法是使用预训练的网络(例如在ImageNet上训练的分类1000类的网络)来重新fine-tuning(也叫微调),或者当做特征提取器. 以下是常见的两类迁移学习场景: 卷积网络当做特征提取器.使用在ImageNet上预训练的网络,去掉最后的全连接层,剩余部分当做特征提取器(例如AlexNet在最后分类器前,是4096维的特征向量).这样提取的特征叫做CNN codes.得到这样的特征后,可以使用

iOS开发中的技巧, 注意事项

以后开发中常用的知识和小技巧: 需要掌握的第三方框架: 网络请求类:AFNetworking(必须).ASIHTTPRequest(和可能会用到,尽量掌握) 图片加载类:SD WebImage(必须) 数据库:FMDB 瀑布流:第三方和系统自带的.PS:系统自带的瀑布流只支持iOS6或者以上系统 抽屉效果:有多个如:MMDrawerController 下拉刷新:第三方和系统自带的,PS:系统自带的UIRefreshControl只支持iOS6或者以上系统 UIWebView主要是于JS的交互

DeepLearning (五) 基于Keras的CNN 训练cifar-10 数据库

数据库介绍 开发工具 网络框架 训练结果 训练要点 激活函数 Dropout 的作用 训练代码 [原创]Liu_LongPo 转载请注明出处[CSDN]http://blog.csdn.net/llp1992 数据库介绍 Cifar-10是由Hinton的两个大弟子Alex Krizhevsky.Ilya Sutskever收集的一个用于普适物体识别的数据集. Cifar-10由60000张32*32的RGB彩色图片构成,共10个分类.50000张训练,10000张测试(交叉验证).这个数据集最