Class: DNN::Layers::UnPool2D
Instance Attribute Summary collapse
-
#unpool_size ⇒ Object
readonly
Returns the value of attribute unpool_size.
Class Method Summary collapse
Instance Method Summary collapse
- #backward(dout) ⇒ Object
- #build(model) ⇒ Object
- #forward(x) ⇒ Object
-
#initialize(unpool_size) ⇒ UnPool2D
constructor
A new instance of UnPool2D.
- #shape ⇒ Object
- #to_hash ⇒ Object
Methods inherited from Layer
Constructor Details
#initialize(unpool_size) ⇒ UnPool2D
Returns a new instance of UnPool2D.
267 268 269 270 |
# File 'lib/dnn/core/cnn_layers.rb', line 267 def initialize(unpool_size) super() @unpool_size = unpool_size.is_a?(Integer) ? [unpool_size, unpool_size] : unpool_size end |
Instance Attribute Details
#unpool_size ⇒ Object (readonly)
Returns the value of attribute unpool_size.
265 266 267 |
# File 'lib/dnn/core/cnn_layers.rb', line 265 def unpool_size @unpool_size end |
Class Method Details
.load_hash(hash) ⇒ Object
272 273 274 |
# File 'lib/dnn/core/cnn_layers.rb', line 272 def self.load_hash(hash) UnPool2D.new(hash[:unpool_size]) end |
Instance Method Details
#backward(dout) ⇒ Object
294 295 296 297 298 |
# File 'lib/dnn/core/cnn_layers.rb', line 294 def backward(dout) unpool_h, unpool_w = @unpool_size dout = dout.reshape(dout.shape[0], @x_shape[0], unpool_h, @x_shape[1], unpool_w, @num_channel) dout[true, true, 0, true, 0, true].clone end |
#build(model) ⇒ Object
276 277 278 279 280 281 282 283 284 |
# File 'lib/dnn/core/cnn_layers.rb', line 276 def build(model) super prev_h, prev_w = prev_layer.shape[0..1] unpool_h, unpool_w = @unpool_size out_h = prev_h * unpool_h out_w = prev_w * unpool_w @out_size = [out_h, out_w] @num_channel = prev_layer.shape[2] end |
#forward(x) ⇒ Object
286 287 288 289 290 291 292 |
# File 'lib/dnn/core/cnn_layers.rb', line 286 def forward(x) @x_shape = x.shape unpool_h, unpool_w = @unpool_size x2 = Xumo::SFloat.zeros(x.shape[0], x.shape[1], unpool_h, x.shape[2], unpool_w, @num_channel) x2[true, true, 0, true, 0, true] = x x2.reshape(x.shape[0], *@out_size, x.shape[3]) end |
#shape ⇒ Object
300 301 302 |
# File 'lib/dnn/core/cnn_layers.rb', line 300 def shape [@out_width, @out_height, @num_channel] end |
#to_hash ⇒ Object
304 305 306 |
# File 'lib/dnn/core/cnn_layers.rb', line 304 def to_hash super({unpool_size: @unpool_size}) end |