Class: DNN::Layers::Pool2D
- Includes:
- Conv2DUtils
- Defined in:
- lib/dnn/core/layers/cnn_layers.rb
Overview
Super class of all pooling2D class.
Instance Attribute Summary collapse
-
#padding ⇒ Object
readonly
Returns the value of attribute padding.
-
#pool_size ⇒ Object
readonly
Returns the value of attribute pool_size.
-
#strides ⇒ Object
readonly
Returns the value of attribute strides.
Attributes inherited from Layer
Instance Method Summary collapse
- #build(input_shape) ⇒ Object
- #compute_output_shape ⇒ Object
-
#initialize(pool_size, strides: nil, padding: false) ⇒ Pool2D
constructor
A new instance of Pool2D.
- #load_hash(hash) ⇒ Object
- #to_hash ⇒ Object
Methods included from Conv2DUtils
calc_conv2d_out_size, calc_conv2d_padding_size, calc_conv2d_transpose_out_size, calc_conv2d_transpose_padding_size, col2im, col2im_cpu, col2im_gpu, im2col, im2col_cpu, im2col_gpu, zero_padding, zero_padding_bwd
Methods inherited from Layer
#<<, #built?, #call, call, #clean, #forward, from_hash
Constructor Details
#initialize(pool_size, strides: nil, padding: false) ⇒ Pool2D
Returns a new instance of Pool2D.
334 335 336 337 338 339 340 341 342 343 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 334 def initialize(pool_size, strides: nil, padding: false) super() @pool_size = pool_size.is_a?(Integer) ? [pool_size, pool_size] : pool_size @strides = if strides strides.is_a?(Integer) ? [strides, strides] : strides else @pool_size.clone end @padding = padding.is_a?(Integer) ? [padding, padding] : padding end |
Instance Attribute Details
#padding ⇒ Object (readonly)
Returns the value of attribute padding.
328 329 330 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 328 def padding @padding end |
#pool_size ⇒ Object (readonly)
Returns the value of attribute pool_size.
326 327 328 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 326 def pool_size @pool_size end |
#strides ⇒ Object (readonly)
Returns the value of attribute strides.
327 328 329 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 327 def strides @strides end |
Instance Method Details
#build(input_shape) ⇒ Object
345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 345 def build(input_shape) unless input_shape.length == 3 raise DNNShapeError, "Input shape is #{input_shape}. But input shape must be 3 dimensional." end prev_h, prev_w = input_shape[0..1] @num_channel = input_shape[2] @pad_size = if @padding == true calc_conv2d_padding_size(prev_h, prev_w, *@pool_size, @strides) elsif @padding.is_a?(Array) @padding else [0, 0] end @out_size = calc_conv2d_out_size(prev_h, prev_w, *@pool_size, *@pad_size, @strides) super end |
#compute_output_shape ⇒ Object
362 363 364 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 362 def compute_output_shape [*@out_size, @num_channel] end |
#load_hash(hash) ⇒ Object
372 373 374 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 372 def load_hash(hash) initialize(hash[:pool_size], strides: hash[:strides], padding: hash[:padding]) end |
#to_hash ⇒ Object
366 367 368 369 370 |
# File 'lib/dnn/core/layers/cnn_layers.rb', line 366 def to_hash super(pool_size: @pool_size, strides: @strides, padding: @padding) end |