Class: DNN::Layers::Dropout
- Inherits:
-
Layer
- Object
- Layer
- DNN::Layers::Dropout
show all
- Defined in:
- lib/dnn/core/layers/basic_layers.rb
Instance Attribute Summary collapse
Attributes inherited from Layer
#input_shape
Instance Method Summary
collapse
Methods inherited from Layer
#build, #built?, #call, call, #clean, from_hash, #output_shape
Constructor Details
#initialize(dropout_ratio = 0.5, seed: rand(1 << 31), use_scale: true) ⇒ Dropout
355
356
357
358
359
360
361
362
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 355
def initialize(dropout_ratio = 0.5, seed: rand(1 << 31), use_scale: true)
super()
@dropout_ratio = dropout_ratio
@seed = seed
@use_scale = use_scale
@mask = nil
@rnd = Random.new(@seed)
end
|
Instance Attribute Details
#dropout_ratio ⇒ Object
Returns the value of attribute dropout_ratio.
349
350
351
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 349
def dropout_ratio
@dropout_ratio
end
|
#use_scale ⇒ Object
Returns the value of attribute use_scale.
350
351
352
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 350
def use_scale
@use_scale
end
|
Instance Method Details
#backward(dy) ⇒ Object
375
376
377
378
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 375
def backward(dy)
dy[@mask] = 0
dy
end
|
#forward(x) ⇒ Object
364
365
366
367
368
369
370
371
372
373
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 364
def forward(x)
if DNN.learning_phase
Xumo::SFloat.srand(@rnd.rand(1 << 31))
@mask = Xumo::SFloat.new(*x.shape).rand < @dropout_ratio
x[@mask] = 0
elsif @use_scale
x *= (1 - @dropout_ratio)
end
x
end
|
#load_hash(hash) ⇒ Object
384
385
386
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 384
def load_hash(hash)
initialize(hash[:dropout_ratio], seed: hash[:seed], use_scale: hash[:use_scale])
end
|
#to_hash ⇒ Object
380
381
382
|
# File 'lib/dnn/core/layers/basic_layers.rb', line 380
def to_hash
super(dropout_ratio: @dropout_ratio, seed: @seed, use_scale: @use_scale)
end
|