首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >池层或卷积层后的激活功能?

池层或卷积层后的激活功能?
EN

Stack Overflow用户
提问于 2016-02-21 23:20:54
回答 3查看 27.7K关注 0票数 39

理论分析表明,卷积网络的阶数为:Convolutional Layer - Non-linear Activation - Pooling Layer

  1. 神经网络与深度学习(方程125)
  2. 深度学习书(第304页,第1段)
  3. 列尼特(方程)
  4. 这个标题的来源

但是,在这些站点的最后一个实现中,它说顺序是:Convolutional Layer - Pooling Layer - Non-linear Activation

  1. network3.py
  2. 源代码,LeNetConvPoolLayer类

我也尝试过探索Conv2D操作语法,但是没有激活函数,它只是翻转内核的卷积。有人能帮我解释一下为什么会发生这种事吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-22 09:48:59

嗯,最大的集中和单调增加的非线性通勤。这意味着对于任何输入,MaxPool(Relu(x)) = Relu(MaxPool(x))。在这种情况下,结果是一样的。因此,从技术上来说,最好先通过最大池进行子样本,然后应用非线性(如果它是昂贵的,如sigmoid)。在实践中,情况往往相反--它在性能上似乎没有太大变化。

至于conv2D,它不会翻转内核。它准确地实现了卷积的定义。这是一个线性操作,所以您必须在下一步中自己添加非线性,例如theano.tensor.nnet.relu

票数 56
EN

Stack Overflow用户

发布于 2017-05-29 21:12:12

在许多论文中,人们使用conv -> pooling -> non-linearity。这并不意味着你不能使用另一个订单,得到合理的结果。在最大池层和ReLU的情况下,顺序无关紧要(两者计算相同的内容):

您可以通过记住ReLU是一个按元素划分的操作和一个非递减函数来证明这种情况。

几乎每个激活函数都会发生同样的情况(其中大多数是不递减的)。但是不适用于一般的池层(平均池)。

尽管如此,两个订单都产生了相同的结果,Activation(MaxPool(x))通过执行较少的操作来显着地加快它的速度。对于大小为k的池层,它使用k^2次数较少地调用激活函数。

可悲的是,这种优化对于CNN来说是微不足道的,因为大部分时间都是在卷积层中使用的。

票数 21
EN

Stack Overflow用户

发布于 2021-04-17 14:36:11

Max池是一个基于样本的离散化过程.其目的是对输入表示(图像、隐层输出矩阵等)进行下采样,减少其维数,并允许对包含在所述子区域中的特征进行假设。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35543428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档