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

  • theano.tensor.nnet.conv.conv2d
  • theano.tensor.signal.conv.conv2d

  • 以及最大池化的实现:
  • theano.tensor.signal.downsample.max_pool_2d

  • 我的问题是:
  • conv2d 的两种实现有什么区别?
  • subsampleconv2d 参数的使用和 max_pool_2d 之后的 conv2d 子采样的应用有什么区别?
    这就是以下之间的区别:
    conv2d( ..., subsample=(2,2) )
    


    a = conv2d( ..., subsample = (1,1) )
    max_pool_2d( a, ds = (2,2) )
    
  • 最佳答案

    回答你的第一个问题, here is the section of the Theano docs that addresses it :



    在幕后,它们都调用相同的函数,因此唯一的区别是用户界面。

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

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

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

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

    关于python - Theano conv2d 和 max_pool_2d,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25159498/

    10-12 20:06