汇集图层或卷积图层后的激活函数?

时间:2016-02-21 23:20:54

标签: neural-network theano convolution

这些链接的理论表明,卷积网络的顺序是:Convolutional Layer - Non-linear Activation - Pooling Layer

  1. Neural networks and deep learning (equation (125)
  2. Deep learning book (page 304, 1st paragraph)
  3. Lenet (the equation)
  4. The source in this headline
  5. 但是,在这些网站的最后一次实施中,它说订单是:Convolutional Layer - Pooling Layer - Non-linear Activation

    1. network3.py
    2. The sourcecode, LeNetConvPoolLayer class
    3. 我也尝试过探索Conv2D操作语法,但没有激活功能,它只能与翻转内核进行卷积。有人可以帮我解释为什么会这样吗?

3 个答案:

答案 0 :(得分:19)

嗯,max-pooling和monotonely增加的非线性通勤。这意味着任何输入的MaxPool(Relu(x))= Relu(MaxPool(x))。因此在这种情况下结果是一样的。因此,最好先通过max-pooling进行子采样,然后应用非线性(如果成本很高,例如sigmoid)。

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

答案 1 :(得分:12)

在许多论文中,人们使用conv -> pooling -> non-linearity。这并不意味着您不能使用其他订单并获得合理的结果。在max-pooling layer和ReLU的情况下,顺序无关紧要(两者都计算相同的东西):

enter image description here

你可以通过记住ReLU是一个元素操作和一个非递减函数来证明这种情况,所以

enter image description here

几乎每个激活函数都会发生同样的事情(大多数都是非递减函数)。但是对于一般的池化层(平均池)不起作用。

尽管如此,两个订单都会产生相同的结果,Activation(MaxPool(x))通过减少操作量来显着提高速度。对于大小为k的合并图层,它对激活函数的调用次数会少k^2次。

可悲的是,这种优化对于CNN来说可以忽略不计,因为大部分时间都用在卷积层中。

答案 2 :(得分:1)

最大池化是一个基于样本的离散化过程。目标是对输入表示(图像、隐藏层输出矩阵等)进行下采样,降低其维度并允许对分箱后的子区域中包含的特征进行假设