让CNN跑起来,以下是调参的所有秘密

知乎上看到的

- 收集高质量标注数据

- 输入输出数据做好归一化,以防出现数值问题,方法就是主成分分析啥的。

- 参数初始化很重要。太小了,参数根本走不动。一般权重参数0.01均方差,0均值的高斯分布是万能的,不行就试更大的。偏差参数全0即可。

- 用SGD ,minibatch size 128。或者更小size ,但那样吞吐量变小,计算效率变低。

- 用带momentum的SGD,二阶方法不用也罢。

- 梯度更新的步长很重要。一般0.1是个万能数值。调参可改进结果,具体做法是人肉监督:用另外的验证集观察测试错误率,一旦不降了,步长减半甚至更多。

- 梯度归一化:除以minibatch size ,这样就不显式依赖minibatch size

- 限制权重参数的最大值防止跑飞。一般最大行范数不超过2或者4,否则同比收缩到这个值。

- 梯度大致应该总是只改变参数的千分之一,偏离这个数字太远的,调之。

- dropout一定要用

- relu一定要用

授人以鱼不如授人与渔。cnn调参,最好的参考论文就是那篇nips2012用cnn做imagenet的,没有之一。dropout那篇文章可作为最佳补充。

时间: 2024-10-10 10:26:37

让CNN跑起来,以下是调参的所有秘密的相关文章

基于pytorch的CNN、LSTM神经网络模型调参小结

(Demo) 这是最近两个月来的一个小总结,实现的demo已经上传github,里面包含了CNN.LSTM.BiLSTM.GRU以及CNN与LSTM.BiLSTM的结合还有多层多通道CNN.LSTM.BiLSTM等多个神经网络模型的的实现.这篇文章总结一下最近一段时间遇到的问题.处理方法和相关策略,以及经验(其实并没有什么经验)等,白菜一枚. Demo Site:  https://github.com/bamtercelboo/cnn-lstm-bilstm-deepcnn-clstm-in-

01.CNN调参

调参是个头疼的事情,Yann LeCun.Yoshua Bengio和Geoffrey Hinton这些大牛为什么能够跳出各种牛逼的网络? 下面一些推荐的书和文章:调参资料总结Neural Network: Trick of the Trade Neural Networks: Tricks of the Trade Practical Recommendations for Gradient-based Training of Deep Architectures http://arxiv.o

支持向量机高斯核调参小结

在支持向量机(以下简称SVM)的核函数中,高斯核(以下简称RBF)是最常用的,从理论上讲, RBF一定不比线性核函数差,但是在实际应用中,却面临着几个重要的超参数的调优问题.如果调的不好,可能比线性核函数还要差.所以我们实际应用中,能用线性核函数得到较好效果的都会选择线性核函数.如果线性核不好,我们就需要使用RBF,在享受RBF对非线性数据的良好分类效果前,我们需要对主要的超参数进行选取.本文我们就对scikit-learn中 SVM RBF的调参做一个小结. 1. SVM RBF 主要超参数概

scikit-learn 梯度提升树(GBDT)调参小结

在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn GBDT类库概述 在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类.两者的参数类型完全相同,当然有些参数比如损失函数loss的可选择项并不相同.这些参数中,类似于Adabo

Deep learning网络调参技巧

参数初始化 下面几种方式,随便选一个,结果基本都差不多.但是一定要做.否则可能会减慢收敛速度,影响收敛结果,甚至造成Nan等一系列问题.n_in为网络的输入大小,n_out为网络的输出大小,n为n_in或(n_in+n_out)*0.5Xavier初始法论文:http://jmlr.org/proceedings/papers/v9/glorot10a/glorot10a.pdfHe初始化论文:https://arxiv.org/abs/1502.01852 uniform均匀分布初始化:w =

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类

scikit learn 模块 调参 pipeline+girdsearch 数据举例:文档分类数据集 fetch_20newsgroups #-*- coding: UTF-8 -*- import numpy as np from sklearn.pipeline import Pipeline from sklearn.linear_model import SGDClassifier from sklearn.grid_search import GridSearchCV from sk

随机森林在乳腺癌数据上的调参

这篇文章中,使用基于方差和偏差的调参方法,在乳腺癌数据上进行一次随机森林的调参.乳腺癌数据是sklearn自带的分类数据之一. 方差和偏差 案例中,往往使用真实数据,为什么我们要使用sklearn自带的数据呢?因为真实数据在随机森林下的调参过程,往往非常缓慢.真实数据量大,维度高,在使用随机森林之前需要一系列的处理,因此不太适合用来做直播中的案例演示.原本,我为大家准备了kaggle上下载的辨别手写数字的数据,有4W多条记录700多个左右的特征,随机森林在这个辨别手写数字的数据上有非常好的表现,

深度学习调参经验汇总

此篇文章是在原创教程这个栏目下,但实际上是一篇汇总整理文章.相信大家在做深度学习时对调参尤为无奈,经验不足乱调一通,或者参数太多无从下手,我也如此.希望通过此文汇总网上一些调参的经验方法,供大家参考.此文会对网上每一篇调参文章做简练的总结与提炼,以此为此文的组成单元,并附上原文的链接.如果遇到不对的地方,欢迎指正~本文也将不定期更新,最后祝大家调参(炼金)顺利! 有多少人工,就有多少智能!(笑哭脸) 人工智障 炼金大法 你已经是成熟的算法了,要学会自己调参 正文开始 UNIT 1 case1:网

深度学习_调参经验

面对一个图像分类问题,可以有以下步骤: 1.建立一个简单的CNN模型,一方面能够快速地run一个模型,以了解这个任务的难度 卷积层1:卷积核大小3*3,卷积核移动步长1,卷积核个数64,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU. 卷积层2:卷积核大小3*3,卷积核移动步长1,卷积核个数128,池化大小2*2,池化步长2,池化类型为最大池化,激活函数ReLU. 卷积层3:卷积核大小3*3,卷积核移动步长1,卷积核个数256,池化大小2*2,池化步长2,池化类型为最大池化,激