class Chainer::Functions::Pooling::AveragePooling2DGrad

Public Class Methods

new(apool2d) click to toggle source
# File lib/chainer/functions/pooling/average_pooling_2d.rb, line 39
def initialize(apool2d)
  @kh = apool2d.kh
  @kw = apool2d.kw
  @sy = apool2d.sy
  @sx = apool2d.sx
  @ph = apool2d.ph
  @pw = apool2d.pw
  @in_shape = apool2d.in_shape
  @in_dtype = apool2d.in_dtype
  @apool2d = apool2d
end

Public Instance Methods

backward(indexes, grad_outputs) click to toggle source
# File lib/chainer/functions/pooling/average_pooling_2d.rb, line 62
def backward(indexes, grad_outputs)
  AveragePooling2D.new([@kh, @kw], stride: [@sy, @sx], pad: [@ph, @pw], cover_all: false).apply(grad_outputs)
end
forward(gy) click to toggle source
# File lib/chainer/functions/pooling/average_pooling_2d.rb, line 51
def forward(gy)
  h, w  = @in_shape[2..-1]
  shape = gy[0].shape
  shape.insert(2, 1, 1)
  gcol = gy[0].reshape(*shape).tile(1, 1, @kh, @kw, 1, 1)

  gx = Chainer::Utils::Conv.col2im(gcol, @sy, @sx, @ph, @pw, h, w)
  gx /= @kh * @kw
  [gx]
end