这些链接的理论表明,卷积网络的顺序是:Convolutional Layer - Non-linear Activation - Pooling Layer
。
但是,在这些网站的最后一次实施中,它说订单是:Convolutional Layer - Pooling Layer - Non-linear Activation
我也尝试过探索Conv2D操作语法,但没有激活功能,它只能与翻转内核进行卷积。有人可以帮我解释为什么会这样吗?
答案 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的情况下,顺序无关紧要(两者都计算相同的东西):
你可以通过记住ReLU是一个元素操作和一个非递减函数来证明这种情况,所以
几乎每个激活函数都会发生同样的事情(大多数都是非递减函数)。但是对于一般的池化层(平均池)不起作用。
尽管如此,两个订单都会产生相同的结果,Activation(MaxPool(x))
通过减少操作量来显着提高速度。对于大小为k
的合并图层,它对激活函数的调用次数会少k^2
次。
可悲的是,这种优化对于CNN来说可以忽略不计,因为大部分时间都用在卷积层中。
答案 2 :(得分:1)
最大池化是一个基于样本的离散化过程。目标是对输入表示(图像、隐藏层输出矩阵等)进行下采样,降低其维度并允许对分箱后的子区域中包含的特征进行假设