汇集层或卷积层后的激活功能?

问题描述 投票:16回答:2

这些链接的理论表明,卷积网络的顺序是: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

但是,在这些网站的最后一次实施中,它说订单是:Convolutional Layer - Pooling Layer - Non-linear Activation

  1. network3.py
  2. The sourcecode, LeNetConvPoolLayer class

我也尝试过探索Conv2D操作语法,但是没有激活函数,它只是与翻转内核的卷积。有人可以帮我解释为什么会这样吗?

neural-network theano convolution
2个回答
20
投票

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

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


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来说可以忽略不计,因为大部分时间用于卷积层。

© www.soinside.com 2019 - 2024. All rights reserved.