Theano conv2d和max_pool_2d

时间:2014-08-06 11:42:18

标签: python numpy neural-network convolution theano

实施convolutional neural network (CNN) in theno时遇到conv2d运算符的两种变体:

max-pooling的实现:

我的问题是:

  1. conv2d的两个实现之间有什么区别?
  2. subsample使用conv2d参数与max_pool_2d之后conv2d子采样的应用有何区别? 这就是:

    之间的区别
    conv2d( ..., subsample=(2,2) ) 
    

    a = conv2d( ..., subsample = (1,1) )
    max_pool_2d( a, ds = (2,2) )
    

1 个答案:

答案 0 :(得分:6)

在回答您的第一个问题时,here is the section of the Theano docs that addresses it

  

conv2d存在两个类似的实现:

signal.conv2d and nnet.conv2d.
     

前者实现传统的2D卷积,而后者实现   实现卷积神经网络中存在的卷积层   网络(过滤器是3D,并通过多个输入通道汇集)。

在引擎盖下,它们都调用相同的功能,因此唯一的区别是用户界面。

关于你的第二个问题,结果是不同的。等效调用:

conv2(..., subsample=(2,2))

将是:

conv2d(...,subsample=(1,1))[:,:,::2,::2]

换句话说,conv2d不会占用整个池区域的最大值,而是占用池区域索引[0,0]的元素。