Class: DNN::Layers::Dropout
Instance Attribute Summary collapse
-
#dropout_ratio ⇒ Float
readonly
Dropout ratio.
-
#use_scale ⇒ Float
readonly
Use 'weight scaling inference rule'.
Attributes inherited from Layer
Class Method Summary collapse
Instance Method Summary collapse
- #backward(dout) ⇒ Object
- #forward(x, learning_phase) ⇒ Object
-
#initialize(dropout_ratio = 0.5, seed: rand(1 << 31), use_scale: true) ⇒ Dropout
constructor
A new instance of Dropout.
- #to_hash ⇒ Object
Methods inherited from Layer
#build, #built?, #output_shape
Constructor Details
#initialize(dropout_ratio = 0.5, seed: rand(1 << 31), use_scale: true) ⇒ Dropout
Returns a new instance of Dropout.
287 288 289 290 291 292 293 |
# File 'lib/dnn/core/layers.rb', line 287 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 end |
Instance Attribute Details
#dropout_ratio ⇒ Float (readonly)
Returns dropout ratio.
279 280 281 |
# File 'lib/dnn/core/layers.rb', line 279 def dropout_ratio @dropout_ratio end |
#use_scale ⇒ Float (readonly)
Returns Use 'weight scaling inference rule'.
281 282 283 |
# File 'lib/dnn/core/layers.rb', line 281 def use_scale @use_scale end |
Class Method Details
.load_hash(hash) ⇒ Object
283 284 285 |
# File 'lib/dnn/core/layers.rb', line 283 def self.load_hash(hash) self.new(hash[:dropout_ratio], seed: hash[:seed], use_scale: hash[:use_scale]) end |
Instance Method Details
#backward(dout) ⇒ Object
306 307 308 309 |
# File 'lib/dnn/core/layers.rb', line 306 def backward(dout) dout[@mask] = 0 dout end |
#forward(x, learning_phase) ⇒ Object
295 296 297 298 299 300 301 302 303 304 |
# File 'lib/dnn/core/layers.rb', line 295 def forward(x, learning_phase) if learning_phase Xumo::SFloat.srand(@seed) @mask = Xumo::SFloat.ones(*x.shape).rand < @dropout_ratio x[@mask] = 0 else x *= (1 - @dropout_ratio) if @use_scale end x end |
#to_hash ⇒ Object
311 312 313 |
# File 'lib/dnn/core/layers.rb', line 311 def to_hash super({dropout_ratio: @dropout_ratio, seed: @seed, use_scale: @use_scale}) end |