Class: DNN::Layers::MaxPool2D
- Defined in:
- lib/dnn/core/cnn_layers.rb
Instance Attribute Summary
Attributes inherited from Pool2D
#padding, #pool_size, #strides
Attributes inherited from Layer
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from Pool2D
#build, #initialize, #output_shape, #to_hash
Methods inherited from Layer
#build, #built?, #initialize, #output_shape, #to_hash
Constructor Details
This class inherits a constructor from DNN::Layers::Pool2D
Class Method Details
.from_hash(hash) ⇒ Object
357 358 359 |
# File 'lib/dnn/core/cnn_layers.rb', line 357 def self.from_hash(hash) Pool2D.from_hash(self, hash) end |
Instance Method Details
#backward(dy) ⇒ Object
371 372 373 374 375 376 377 |
# File 'lib/dnn/core/cnn_layers.rb', line 371 def backward(dy) dmax = Xumo::SFloat.zeros(dy.size * @pool_size.reduce(:*)) dmax[@max_index] = dy.flatten dcol = dmax.reshape(dy.shape[0..2].reduce(:*), @pool_size.reduce(:*) * dy.shape[3]) dx = col2im(dcol, @x_shape, *@out_size, *@pool_size, @strides) @padding ? zero_padding_bwd(dx, @pad_size) : dx end |
#forward(x) ⇒ Object
361 362 363 364 365 366 367 368 369 |
# File 'lib/dnn/core/cnn_layers.rb', line 361 def forward(x) x = zero_padding(x, @pad_size) if @padding @x_shape = x.shape col = im2col(x, *@out_size, *@pool_size, @strides) col = col.reshape(x.shape[0] * @out_size.reduce(:*), @pool_size.reduce(:*), x.shape[3]).transpose(0, 2, 1) .reshape(x.shape[0] * @out_size.reduce(:*) * x.shape[3], @pool_size.reduce(:*)) @max_index = col.max_index(1) col.max(1).reshape(x.shape[0], *@out_size, x.shape[3]) end |