精华内容
下载资源
问答
  • 下面展示了同一尺寸图像经过不同尺寸卷积核得到相同尺寸featuremap的过程,以及不同的参数量和计算量(这里不包含偏置): 一般卷积核的深度与上层featuremap深度(featuremap数)相等; 下层featuremap深度...

    下面展示了同一尺寸图像经过不同尺寸卷积核得到相同尺寸featuremap的过程,以及不同的参数量和计算量(这里不包含偏置):

    一般卷积核的深度与上层featuremap深度(featuremap数)相等;

    下层featuremap深度(featuremap数)即为该层网络卷积核的个数;

     

    展开全文
  • 上图b可以理解为卷积核大小依然是3×3,但是每个卷积点之间有1个空洞,也就是在绿色7×7区域里面,只有9个红色点位置作了卷积处理,其余点权重为0。这样即使卷积核大小不变,但它看到的区域变得更大了。详细解释可以...

    文章转自:https://www.leiphone.com/news/201708/0rQBSwPO62IBhRxV.html

    从2012年的AlexNet发展至今,科学家们发明出各种各样的CNN模型,一个比一个深,一个比一个准确,一个比一个轻量。我下面会对近几年一些具有变革性的工作进行简单盘点,从这些充满革新性的工作中探讨日后的CNN变革方向。

    注:水平所限,下面的见解或许有偏差,望大牛指正。另外只介绍其中具有代表性的模型,一些著名的模型由于原理相同将不作介绍,若有遗漏也欢迎指出。

    一、卷积只能在同一组进行吗?-- Group convolution

    Group convolution 分组卷积,最早在AlexNet中出现,由于当时的硬件资源有限,训练AlexNet时卷积操作不能全部放在同一个GPU处理,因此作者把feature maps分给多个GPU分别进行处理,最后把多个GPU的结果进行融合。

     

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

    AlexNet

    分组卷积的思想影响比较深远,当前一些轻量级的SOTA(State Of The Art)网络,都用到了分组卷积的操作,以节省计算量。但题主有个疑问是,如果分组卷积是分在不同GPU上的话,每个GPU的计算量就降低到 1/groups,但如果依然在同一个GPU上计算,最终整体的计算量是否不变?找了pytorch上有关组卷积操作的介绍,望读者解答我的疑问。

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

    pytroch github

    EDIT:

    关于这个问题,知乎用户朋友 @蔡冠羽 提出了他的见解:

    我感觉group conv本身应该就大大减少了参数,比如当input channel为256,output channel也为256,kernel size为3*3,不做group conv参数为256*3*3*256,若group为8,每个group的input channel和output channel均为32,参数为8*32*3*3*32,是原来的八分之一。这是我的理解。

    我的理解是分组卷积最后每一组输出的feature maps应该是以concatenate的方式组合,而不是element-wise add,所以每组输出的channel是 input channels / #groups,这样参数量就大大减少了。

    二、卷积核一定越大越好?-- 3×3卷积核

    AlexNet中用到了一些非常大的卷积核,比如11×11、5×5卷积核,之前人们的观念是,卷积核越大,receptive field(感受野)越大,看到的图片信息越多,因此获得的特征越好。虽说如此,但是大的卷积核会导致计算量的暴增,不利于模型深度的增加,计算性能也会降低。于是在VGG(最早使用)、Inception网络中,利用2个3×3卷积核的组合比1个5×5卷积核的效果更佳,同时参数量(3×3×2+1 VS 5×5×1+1)被降低,因此后来3×3卷积核被广泛应用在各种模型中。

     

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

    三、每层卷积只能用一种尺寸的卷积核?-- Inception结构

    传统的层叠式网络,基本上都是一个个卷积层的堆叠,每层只用一个尺寸的卷积核,例如VGG结构中使用了大量的3×3卷积层。事实上,同一层feature map可以分别使用多个不同尺寸的卷积核,以获得不同尺度的特征,再把这些特征结合起来,得到的特征往往比使用单一卷积核的要好,谷歌的GoogLeNet,或者说Inception系列的网络,就使用了多个卷积核的结构:

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

    最初版本的Inception结构

    如上图所示,一个输入的feature map分别同时经过1×1、3×3、5×5的卷积核的处理,得出的特征再组合起来,获得更佳的特征。但这个结构会存在一个严重的问题:参数量比单个卷积核要多很多,如此庞大的计算量会使得模型效率低下。这就引出了一个新的结构:

    四、怎样才能减少卷积层参数量?-- Bottleneck

    发明GoogleNet的团队发现,如果仅仅引入多个尺寸的卷积核,会带来大量的额外的参数,受到Network In Network中1×1卷积核的启发,为了解决这个问题,他们往Inception结构中加入了一些1×1的卷积核,如图所示:

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    加入1×1卷积核的Inception结构

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

    根据上图,我们来做个对比计算,假设输入feature map的维度为256维,要求输出维度也是256维。有以下两种操作:

    1. 256维的输入直接经过一个3×3×256的卷积层,输出一个256维的feature map,那么参数量为:256×3×3×256 = 589,824

    2. 256维的输入先经过一个1×1×64的卷积层,再经过一个3×3×64的卷积层,最后经过一个1×1×256的卷积层,输出256维,参数量为:256×1×1×64 + 64×3×3×64 + 64×1×1×256 = 69,632。足足把第一种操作的参数量降低到九分之一!

    1×1卷积核也被认为是影响深远的操作,往后大型的网络为了降低参数量都会应用上1×1卷积核。

    五、越深的网络就越难训练吗?-- Resnet残差网络

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    ResNet skip connection

    传统的卷积层层叠网络会遇到一个问题,当层数加深时,网络的表现越来越差,很大程度上的原因是因为当层数加深时,梯度消散得越来越严重,以至于反向传播很难训练到浅层的网络。为了解决这个问题,何凯明大神想出了一个“残差网络”,使得梯度更容易地流动到浅层的网络当中去,而且这种“skip connection”能带来更多的好处,这里可以参考一个PPT:极深网络(ResNet/DenseNet): Skip Connection为何有效及其它 ,以及我的一篇文章:为什么ResNet和DenseNet可以这么深?一文详解残差块为何能解决梯度弥散问题。 大家可以结合下面的评论进行思考。

    六、卷积操作时必须同时考虑通道和区域吗?-- DepthWise操作

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    标准的卷积过程可以看上图,一个2×2的卷积核在卷积时,对应图像区域中的所有通道均被同时考虑,问题在于,为什么一定要同时考虑图像区域和通道?我们为什么不能把通道和空间区域分开考虑?

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    Xception网络就是基于以上的问题发明而来。我们首先对每一个通道进行各自的卷积操作,有多少个通道就有多少个过滤器。得到新的通道feature maps之后,这时再对这批新的通道feature maps进行标准的1×1跨通道卷积操作。这种操作被称为 “DepthWise convolution” ,缩写“DW”。

    这种操作是相当有效的,在imagenet 1000类分类任务中已经超过了InceptionV3的表现,而且也同时减少了大量的参数,我们来算一算,假设输入通道数为3,要求输出通道数为256,两种做法:

    1.直接接一个3×3×256的卷积核,参数量为:3×3×3×256 = 6,912

    2.DW操作,分两步完成,参数量为:3×3×3 + 3×1×1×256 = 795,又把参数量降低到九分之一!

    因此,一个depthwise操作比标准的卷积操作降低不少的参数量,同时论文中指出这个模型得到了更好的分类效果。

    EDIT:2017.08.25

    本文在发出12小时后,一位知乎用户私信了我,向我介绍了Depthwise和Pointwise的历史工作,而Xception和Mobilenet也引用了他们16年的工作,就是Min Wang et al 的Factorized Convolutional Neural Networks,这篇论文的Depthwise中,每一通道输出的feature map(称为“基层”)可以不止一个,而Xception中的Depthwise separable Convolution, 正是这篇工作中“单一基层”的情况。推荐有兴趣的读者关注下他们的工作,这里有篇介绍博文:【深度学习】卷积层提速Factorized Convolutional Neural Networks。而最早关于separable convolution的介绍,Xception作者提到,应该追溯到Lau- rent Sifre 2014年的工作 Rigid-Motion Scattering For Image Classification 6.2章节。

    七、分组卷积能否对通道进行随机分组?-- ShuffleNet

    在AlexNet的Group Convolution当中,特征的通道被平均分到不同组里面,最后再通过两个全连接层来融合特征,这样一来,就只能在最后时刻才融合不同组之间的特征,对模型的泛化性是相当不利的。为了解决这个问题,ShuffleNet在每一次层叠这种Group conv层前,都进行一次channel shuffle,shuffle过的通道被分配到不同组当中。进行完一次group conv之后,再一次channel shuffle,然后分到下一层组卷积当中,以此循环。

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    来自ShuffleNet论文

    经过channel shuffle之后,Group conv输出的特征能考虑到更多通道,输出的特征自然代表性就更高。另外,AlexNet的分组卷积,实际上是标准卷积操作,而在ShuffleNet里面的分组卷积操作是depthwise卷积,因此结合了通道洗牌和分组depthwise卷积的ShuffleNet,能得到超少量的参数以及超越mobilenet、媲美AlexNet的准确率!

    另外值得一提的是,微软亚洲研究院MSRA最近也有类似的工作,他们提出了一个IGC单元(Interleaved Group Convolution),即通用卷积神经网络交错组卷积,形式上类似进行了两次组卷积,Xception 模块可以看作交错组卷积的一个特例,特别推荐看看这篇文章:王井东详解ICCV 2017入选论文:通用卷积神经网络交错组卷积

    要注意的是,Group conv是一种channel分组的方式,Depthwise +Pointwise是卷积的方式,只是ShuffleNet里面把两者应用起来了。因此Group conv和Depthwise +Pointwise并不能划等号。

    八、通道间的特征都是平等的吗? -- SEnet

    无论是在Inception、DenseNet或者ShuffleNet里面,我们对所有通道产生的特征都是不分权重直接结合的,那为什么要认为所有通道的特征对模型的作用就是相等的呢? 这是一个好问题,于是,ImageNet2017 冠军SEnet就出来了。

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    SEnet 结构

    一组特征在上一层被输出,这时候分两条路线,第一条直接通过,第二条首先进行Squeeze操作(Global Average Pooling),把每个通道2维的特征压缩成一个1维,从而得到一个特征通道向量(每个数字代表对应通道的特征)。然后进行Excitation操作,把这一列特征通道向量输入两个全连接层和sigmoid,建模出特征通道间的相关性,得到的输出其实就是每个通道对应的权重,把这些权重通过Scale乘法通道加权到原来的特征上(第一条路),这样就完成了特征通道的权重分配。作者详细解释可以看这篇文章:专栏 | Momenta详解ImageNet 2017夺冠架构SENet

    九、能否让固定大小的卷积核看到更大范围的区域?-- Dilated convolution

    标准的3×3卷积核只能看到对应区域3×3的大小,但是为了能让卷积核看到更大的范围,dilated conv使其成为了可能。dilated conv原论文中的结构如图所示:

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    上图b可以理解为卷积核大小依然是3×3,但是每个卷积点之间有1个空洞,也就是在绿色7×7区域里面,只有9个红色点位置作了卷积处理,其余点权重为0。这样即使卷积核大小不变,但它看到的区域变得更大了。详细解释可以看这个回答:如何理解空洞卷积(dilated convolution)?

    十、卷积核形状一定是矩形吗?-- Deformable convolution 可变形卷积核

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    图来自微软亚洲研究院公众号

    传统的卷积核一般都是长方形或正方形,但MSRA提出了一个相当反直觉的见解,认为卷积核的形状可以是变化的,变形的卷积核能让它只看感兴趣的图像区域 ,这样识别出来的特征更佳。

    变形卷积核、可分离卷积?卷积神经网络中十大拍案叫绝的操作。

     

    图来自微软亚洲研究院公众号。要做到这个操作,可以直接在原来的过滤器前面再加一层过滤器,这层过滤器学习的是下一层卷积核的位置偏移量(offset),这样只是增加了一层过滤器,或者直接把原网络中的某一层过滤器当成学习offset的过滤器,这样实际增加的计算量是相当少的,但能实现可变形卷积核,识别特征的效果更好。详细MSRA的解读可以看这个链接:可变形卷积网络:计算机新“视”界。

    启发与思考

    现在越来越多的CNN模型从巨型网络到轻量化网络一步步演变,模型准确率也越来越高。现在工业界追求的重点已经不是准确率的提升(因为都已经很高了),都聚焦于速度与准确率的trade off,都希望模型又快又准。因此从原来AlexNet、VGGnet,到体积小一点的Inception、Resnet系列,到目前能移植到移动端的mobilenet、ShuffleNet(体积能降低到0.5mb!),我们可以看到这样一些趋势:

    卷积核方面:

    1. 大卷积核用多个小卷积核代替;

    2. 单一尺寸卷积核用多尺寸卷积核代替;

    3. 固定形状卷积核趋于使用可变形卷积核;

    4. 使用1×1卷积核(bottleneck结构)。

    卷积层通道方面:

    1. 标准卷积用depthwise卷积代替;

    2. 使用分组卷积;

    3. 分组卷积前使用channel shuffle;

    4. 通道加权计算。

    卷积层连接方面:

    1. 使用skip connection,让模型更深;

    2. densely connection,使每一层都融合上其它层的特征输出(DenseNet)

    启发

    类比到通道加权操作,卷积层跨层连接能否也进行加权处理?bottleneck + Group conv + channel shuffle + depthwise的结合会不会成为以后降低参数量的标准配置?

    展开全文
  • 今天小编就为大家分享一篇浅谈pytorch卷积核大小的设置对全连接神经元的影响,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 在跑一份代码时,效果一直提升不上去,偶然将3 * 3的卷积核换成了4 * 4的卷积核,效果奇佳,于是搜索了一下卷积核大小对网络性能的影响,总结如下: 1.大卷积核和小卷积核 显然,大卷积核的感受野更大,自然提取...
  • 1*1卷积核的作用和大卷积核小卷积核的各自优缺点介绍。

    作者:RayChiu_Labloy
    版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处


    1*1卷积核的作用

    • 升维降维
    • 增加激活函数提升模型语义能力
    • 减少参数量
    • 通道间数据整合(也是降维升维过程中带来的好处,输入层和1*1卷积核连接类似全连接)

    大卷积核和小卷积核比较

            首先只有在1*1卷积核之上大小的卷积核才有感受野的作用。

            卷积核大了感受野大,可以审视更为宽广区域的feature Map,所获得的全局特征越好。虽然很多情况下可以由几个小的卷积核代替(例如一个7*7的卷积核可以由3个3*3的卷积核代替),但是虽说网络增加了深度有很多优点,但是也会增加梯度消失的风险。

            反过来说连续的小卷积核代替大卷积核是现在比较常用的做法,优点很多,比如深度增加带来的非线性激活函数多了,语义表达强了,计算量也会变少,参数量也同样变少,梯度消失的问题因为BN等技术出现得到了很好的优化。另外深度增加语义表达能力增加了,在一些情况下还容易出现过拟合,有时候还不如浅层模型效果好,防止过拟合的方法也出现了很多,也很好解决了这些问题,参考:详细讲解深层神经网络DNN_RayChiu757374816的博客-CSDN博客_dnn神经网络

    【如果对您有帮助,交个朋友给个一键三连吧,您的肯定是我博客高质量维护的动力!!!】 

    展开全文
  • 看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积神经网络结构图1,最后输出为什么是12个map,即输出12个特征?然后图2又是...

    转载自https://yq.aliyun.com/articles/610509 仅方便自己学习

    卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积神经网络结构图1,最后输出为什么是12个map,即输出12个特征?然后图2又是输出10个特征了?

     

    image

     

    image

    在达到相同感受野的情况下,卷积核越小,所需要的参数和计算量越小。
    具体来说。卷积核大小必须大于1才有提升感受野的作用,1排除了。而大小为偶数的卷积核即使对称地加padding也不能保证输入feature map尺寸和输出feature map尺寸不变(画个图算一下就可以发现),2排除了。所以一般都用3作为卷积核大小。

    每一层卷积有多少channel数,以及一共有多少层卷积,这些暂时没有理论支撑,一般都是靠感觉去设置几组候选值,然后通过实验挑选出其中的最佳值。这也是现在深度卷积神经网络虽然效果拔群,但是一直为人诟病的原因之一。
    多说几句,每一层卷积的channel数和网络的总卷积层数,构成了一个巨大的超参集合,这个超参集合里的最优组合,很可能比目前业界各种fancy的结构还要高效。只是我们一来没有理论去求解这个超参集合里的最优,二来没有足够的计算资源去穷举这个超参集合里的每一个组合,因此我们不知道这个超参集合里的最优组合是啥。

    现在业界里提出的各种fancy结构中不少都是不断trial and error,试出来一个效果不错的网络结构,然后讲一个好听的story,因为深度学习理论还不够,所以story一般都是看上去很美,背后到底是不是这回事只有天知道。比如好用到不行的batch norm,它的story是解决internal covariate shift,然而最近有篇文章How Does Batch Normalization Help Optimization? (No, It Is Not About Internal Covariate Shift)通过实验证明实际情况并不如此。

    https://arxiv.org/abs/1805.11604

    推荐一篇讲如何设计CNN网络的文章A practical theory for designing very deep convolutional neural networks。

    https://kaggle2.blob.core.windows.net/forum-message-attachments/69182/2287/A%20practical%20theory%20for%20designing%20very%20deep%20convolutional%20neural%20networks.pdf

    深度学习如何调参

    调参就是trial-and-error. 没有其他捷径可以走. 唯一的区别是有些人盲目的尝试, 有些人思考后再尝试. 快速尝试, 快速纠错这是调参的关键.

    首先说下可视化:
    我个人的理解, 对于可视化, 更多的还是帮助人类以自己熟悉的方式来观察网络. 因为, 你是不可能边观察网络, 还边调参的. 你只是训练完成后(或者准确率到达一个阶段后), 才能可视化. 在这之前, 网络没有学习到良好的参数, 你可视化了也没意义, 网络达到不错的准确率了, 你看看其实也就听个响. 同样, 你的网络训练的一塌糊涂, 你可视化也没什么意义, 唯一能够看到的就是中间结果乱七八糟, 或者全黑全白, 这时候你直接看最后准确率就可以知道这网络没救了.

    关于权重的可视化Visualize Layer Weights(现在是否强求smooth其实意义不大, 这个后面说.):
    同样, 你看到一个不满足平滑结果的图像, 你知道, 这网络训练的不好, 但是为什么呢? 是数据不好? 没有预处理? 网络结构问题? Learning Rate太大或者太小? 或者就是差了一个LRN层(之前我就遇到, 加个LRN就能出smooth的weights, 当然这其实和预处理有关)?

    Smooth是需要看一下的, 心里有个数. 但是具体调参怎么调是没辙的. 第一, 你不可能告诉网络, 这层你得学个边界检测的功能出来. 第二, 不同任务下会有不同的weights(虽然底层的特征有很大的通用性), 你觉得你凭什么来指导一个看图片比你快得多的机器?

    再说现在是否需要强求smooth. 现在的趋势是鼓励使用小filter, 3x3大小, 多加层次(这样, 非线性更好点). 换句话说, 3x3的图片, 总共才9个像素, 你怎么判断smooth与否呢? 当然如果你使用大的filter, 一般5x5往上, 运气不差的话, 你是可以看到smooth的结果的.

    咱们再说另外一个极端, 一个网络,运行的完美(满足应用要求就算完美), 打开一看, 这weights不smooth啊. 你告诉我, 你打算怎么办? 没错, 具有不平滑的权重的网络同样可以获得很好的结果(这种情况我都习以为常了).

    那么可视化网络就不重要了?
    非常重要, 但是不在训练这块, 而是帮助理解网络的原理这块. 理解网络原理后, 你才能在设计结构的时候心里有感觉(只是有感觉而已), 网络出了问题, 或者在某些情况下不满意, 有更好的直觉去调整.(没错, 只是直觉, 虽然有些情况下的调整从网络原理来看逻辑上应该可以工作, 但是人家就是不工作, 你能咬机器去么?)

    那么怎样训练一个不错的网络呢?
    这是一个很好的链接, 说明了如何从零开始不断的trial-and-error(其实这里面没遇到什么error):
    Using convolutional neural nets to detect facial keypoints tutorial

    http://danielnouri.org/notes/2014/12/17/using-convolutional-neural-nets-to-detect-facial-keypoints-tutorial/

    对于调参我自己的经验, 有下面这些:

    基本原则:快速试错

    一些大的注意事项:

    1.刚开始, 先上小规模数据, 模型往大了放, 只要不爆显存, 能用256个filter你就别用128个. 直接奔着过拟合去. 没错, 就是训练过拟合网络, 连测试集验证集这些都可以不用.

    为什么?

    • 你要验证自己的训练脚本的流程对不对. 这一步小数据量, 生成速度快, 但是所有的脚本都是和未来大规模训练一致的(除了少跑点循环)
    • 如果小数据量下, 你这么粗暴的大网络奔着过拟合去都没效果. 那么, 你要开始反思自己了, 模型的输入输出是不是有问题? 要不要检查自己的代码(永远不要怀疑工具库, 除非你动过代码)? 模型解决的问题定义是不是有问题? 你对应用场景的理解是不是有错? 不要怀疑NN的能力, 不要怀疑NN的能力, 不要怀疑NN的能力. 就我们调参狗能遇到的问题, NN没法拟合的, 这概率是有多小?
    • 你可以不这么做, 但是等你数据准备了两天, 结果发现有问题要重新生成的时候, 你这周时间就酱油了.

    2.Loss设计要合理.

    • 一般来说分类就是Softmax, 回归就是L2的loss. 但是要注意loss的错误范围(主要是回归), 你预测一个label是10000的值, 模型输出0, 你算算这loss多大, 这还是单变量的情况下. 一般结果都是nan. 所以不仅仅输入要做normalization, 输出也要这么弄.
    • 多任务情况下, 各loss想法限制在一个量级上, 或者最终限制在一个量级上, 初期可以着重一个任务的loss

    3.观察loss胜于观察准确率

    准确率虽然是评测指标, 但是训练过程中还是要注意loss的. 你会发现有些情况下, 准确率是突变的, 原来一直是0, 可能保持上千迭代, 然后突然变1. 要是因为这个你提前中断训练了, 只有老天替你惋惜了. 而loss是不会有这么诡异的情况发生的, 毕竟优化目标是loss.
    给NN一点时间, 要根据任务留给NN的学习一定空间. 不能说前面一段时间没起色就不管了. 有些情况下就是前面一段时间看不出起色, 然后开始稳定学习.

    4.确认分类网络学习充分

    分类网络就是学习类别之间的界限. 你会发现, 网络就是慢慢的从类别模糊到类别清晰的. 怎么发现? 看Softmax输出的概率的分布. 如果是二分类, 你会发现, 刚开始的网络预测都是在0.5上下, 很模糊. 随着学习过程, 网络预测会慢慢的移动到0,1这种极值附近. 所以, 如果你的网络预测分布靠中间, 再学习学习.

    5.Learning Rate设置合理

    • 太大: loss爆炸, 或者nan
    • 太小: 半天loss没反映(但是, LR需要降低的情况也是这样, 这里可视化网络中间结果, 不是weights, 有效果, 俩者可视化结果是不一样的, 太小的话中间结果有点水波纹或者噪点的样子, 因为filter学习太慢的原因, 试过就会知道很明显)
    • 需要进一步降低了: loss在当前LR下一路降了下来, 但是半天不再降了.
    • 如果有个复杂点的任务, 刚开始, 是需要人肉盯着调LR的. 后面熟悉这个任务网络学习的特性后, 可以扔一边跑去了.
    • 如果上面的Loss设计那块你没法合理, 初始情况下容易爆, 先上一个小LR保证不爆, 等loss降下来了, 再慢慢升LR, 之后当然还会慢慢再降LR, 虽然这很蛋疼.
    • LR在可以工作的最大值下往小收一收, 免得ReLU把神经元弄死了. 当然, 我是个心急的人, 总爱设个大点的.

    6 对比训练集和验证集的loss
    判断过拟合, 训练是否足够, 是否需要early stop的依据, 这都是中规中矩的原则, 不多说了.

    7 清楚receptive field的大小
    CV的任务, context window是很重要的. 所以你对自己模型的receptive field的大小要心中有数. 这个对效果的影响还是很显著的. 特别是用FCN, 大目标需要很大的receptive field. 不像有fully connection的网络, 好歹有个fc兜底, 全局信息都有.

    简短的注意事项:

    预处理: -mean/std zero-center就够了, PCA, 白化什么的都用不上. 我个人观点, 反正CNN能学习encoder, PCA用不用其实关系不大, 大不了网络里面自己学习出来一个.
    shuffle, shuffle, shuffle.
    网络原理的理解最重要, CNN的conv这块, 你得明白sobel算子的边界检测.
    Dropout, Dropout, Dropout(不仅仅可以防止过拟合, 其实这相当于做人力成本最低的Ensemble, 当然, 训练起来会比没有Dropout的要慢一点, 同时网络参数你最好相应加一点, 对, 这会再慢一点).
    CNN更加适合训练回答是否的问题, 如果任务比较复杂, 考虑先用分类任务训练一个模型再finetune.
    无脑用ReLU(CV领域).
    无脑用3x3.
    无脑用xavier.
    LRN一类的, 其实可以不用. 不行可以再拿来试试看.
    filter数量2^n.
    多尺度的图片输入(或者网络内部利用多尺度下的结果)有很好的提升效果.
    第一层的filter, 数量不要太少. 否则根本学不出来(底层特征很重要).
    sgd adam 这些选择上, 看你个人选择. 一般对网络不是决定性的. 反正我无脑用sgd + momentum.
    batch normalization我一直没用, 虽然我知道这个很好, 我不用仅仅是因为我懒. 所以要鼓励使用batch normalization.
    不要完全相信论文里面的东西. 结构什么的觉得可能有效果, 可以拿去试试.
    你有95%概率不会使用超过40层的模型.
    shortcut的联接是有作用的.
    暴力调参最可取, 毕竟, 自己的生命最重要. 你调完这个模型说不定过两天这模型就扔掉了.
    机器, 机器, 机器.
    Google的inception论文, 结构要好好看看.
    一些传统的方法, 要稍微了解了解. 我自己的程序就用过1x14的手写filter, 写过之后你看看inception里面的1x7, 7x1 就会会心一笑。

    原文发布时间为:2018-07-14
    本文作者:大数据挖掘DT机器学习
    本文来自云栖社区合作伙伴“大数据挖掘DT机器学习”,了解相关信息可以关注“大数据挖掘DT机器学习

    展开全文
  • y_train = np_utils.to_categorical(y_train, num_classes=10) y_test = np_utils.to_categorical(y_test, num_classes=10) 定义函数,传入不同的卷积核大小进行试验,这里只选取了卷积核大小为1-10进行实验 def ...
  • 卷积核大小与卷积后特征图大小

    千次阅读 2019-05-26 19:58:28
    其中为Wout输出特征图的大小,Win为输入特征图的大小,F为卷积核大小,stride为卷积步长。不能整除时向上取整。 2.如果计算方式采用’SAME’,输出特征图的大小与输入特征图的大小保持不变, 其中padding为特征图...
  • 卷积核的Size代表感受野的大小卷积核的步长度代表提取的精度: 例如:Size为3的卷积核,如果step为1,那么相邻步感受野之间就会有重复区域,重复区域是两列的数据;如果step为2,那么相邻感受野的重复区域会更少...
  • 深度学习工程师50%的时间都是在进行参数调优,那么,卷积神经网络中卷积核越小越好吗? 比较一下 图片来源:参照海德堡大学HCI Prof. Ommer的PPT 图一 3*3卷积核基本特征 图二 3*3卷积核等价分析  卷积...
  • Q: 为什么CNN中的卷积核一般都是奇数*奇数 ? A: 原因有二。(1) 卷积中有一种same convolution,也就是卷积前后尺寸(高x宽)不变。实现same convolution(n + padding - k + 1 = n) 。若 k 为偶数,那么padding...
  • 3*3卷积核与2*5卷积核对神经元大小的设置 #这里kernal_size = 2*5 class CONV_NET(torch.nn.Module): #CONV_NET类继承nn.Module类 def __init__(self): super(CONV_NET, self).__init__() #使CONV_NET类包含父类...
  • 卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积...
  • 看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积神经网络结构图1,最后输出为什么是12个map,即输出12个特征?然后图2又是...
  • 通过控制卷积核的数量达到通道数大小的放缩。特征降维带来的好处是可以减少参数量和减少计算量。 空洞卷积 空洞卷积(atrous convolutions)又名为扩张卷积(dilated convolitions),向卷积层引入了一个成为“扩张...
  • CNN图像通道数和卷积核的深度及数量的关系 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本...
  • 卷积神经网络的卷积核大小、卷积层数、每层map个数都是如何确定下来的呢?看到有些答案是刚开始随机初始化卷积核大小,卷积层数和map个数是根据经验来设定的,但这个里面应该是有深层次原因吧,比如下面的手写字卷积...
  • 参考资料: 知乎-为什么CNN中的卷积核一般都是奇数奇数,没有偶数偶数的? 深度学习: 卷积核 为什么都是 奇数size ...假设图像的大小,也就是被卷积对象的大小为n∗nn*nn∗n,卷积核大小为k∗kk*kk∗k 当paddin...
  • 采用cnn进行文本分类时,通常我们会将cnn卷积核的尺寸设为5,那么为什么采用这个经验值?再大和再小不行吗? 如果卷积核尺寸过小,就会无法提取完整的词语表征;如果尺寸过大,就会引入噪声。...
  • 4:要分阶段考虑: 1)数据预处理:对数据部分优化,更多,...5:小卷积和大卷积有时会一起用 GoogleNet 1*1 3*3 5*5 7*7 卷积作用就是来特征提取的,对不同范围。 转载于:https://www.cnblogs.com/wxl84...
  • 滤波器与卷积核

    千次阅读 2019-08-10 16:48:18
    卷积核就是一个二维mxm矩阵。二维图像与二维矩阵卷积之后的结果,就实现了对图像的滤波。 卷积核一般有一下一些规则: m的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,...
  • 1、AlexNet中国使用到了一些非常大的卷积核,比如1111,55卷积核,之前人们的观念认为receptive filed感受野越大,看到的图片信息越多,因此获得的特征越好。但另外一个方面大的卷积核会导致计算量的暴增,不利于模型...
  • 就需3×2=6种卷积核 如果个卷积核大小5×5 只是存储全部卷积核的信息就需用5×5×3×2这么大的多维列表 一般应是 “卷积核大小(垂直 ×\times×水平) ×\times×输入图层数 ×\times×输出图层数” 也就是输出层==...
  • 卷积核的理解

    千次阅读 2019-03-06 12:16:57
    由于现实情况中常常是一个信号前一时刻的输出影响着这一时刻的输出,所在一般利用系统的单位响应与系统的输入求卷积,以求得系统的输出信号(当然要求这个系统是线性时不变的)。 卷积的定义: 卷积是两个变量在某...
  • 深度学习:卷积神经网络中的卷积核

    千次阅读 多人点赞 2020-09-20 11:12:46
    同样提取某个特征,经过不同卷积核卷积后效果也不一样(这是个重点,为什么说重点,因为CNN里面卷积核大小就是有讲究的)。 比如说: 可以发现同样是锐化,下图5x5的卷积核要比上图3x3的卷积核效果细腻不少...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,034
精华内容 10,813
关键字:

卷积核大小的影响

友情链接: findTheHoles-master.zip