Theano conv2d和max_pool_2d

Sha*_*hai 3 python numpy convolution neural-network theano

当在实现卷积神经网络(CNN)时,遇到两个conv2d运算符变体:

并实现max-pooling:

我的问题是:

  1. 这两种实现有conv2d什么区别?
  2. subsample参数的使用conv2dmax_pool_2d后采样的应用之间有什么区别conv2d
    那是什么区别:

    conv2d( ..., subsample=(2,2) ) 
    
    Run Code Online (Sandbox Code Playgroud)

    a = conv2d( ..., subsample = (1,1) )
    max_pool_2d( a, ds = (2,2) )
    
    Run Code Online (Sandbox Code Playgroud)

nou*_*uiz 6

在回答您的第一个问题时,以下是Theano文档的部分内容:

conv2d存在两个类似的实现:

signal.conv2d and nnet.conv2d.
Run Code Online (Sandbox Code Playgroud)

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

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

关于你的第二个问题,结果是不同的.相当于:

conv2(..., subsample=(2,2))
Run Code Online (Sandbox Code Playgroud)

将会:

conv2d(...,subsample=(1,1))[:,:,::2,::2]
Run Code Online (Sandbox Code Playgroud)

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