Class: DNN::Layers::Dropout
Instance Attribute Summary collapse
-
#dropout_ratio ⇒ Float
Dropout ratio.
-
#use_scale ⇒ Float
readonly
Use 'weight scaling inference rule'.
Attributes inherited from Layer
Class Method Summary collapse
Instance Method Summary collapse
- #backward(dy) ⇒ Object
- #forward(x) ⇒ 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.
276 277 278 279 280 281 282 |
# File 'lib/dnn/core/layers.rb', line 276 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
Returns dropout ratio.
268 269 270 |
# File 'lib/dnn/core/layers.rb', line 268 def dropout_ratio @dropout_ratio end |
#use_scale ⇒ Float (readonly)
Returns Use 'weight scaling inference rule'.
270 271 272 |
# File 'lib/dnn/core/layers.rb', line 270 def use_scale @use_scale end |
Class Method Details
.from_hash(hash) ⇒ Object
272 273 274 |
# File 'lib/dnn/core/layers.rb', line 272 def self.from_hash(hash) self.new(hash[:dropout_ratio], seed: hash[:seed], use_scale: hash[:use_scale]) end |
Instance Method Details
#backward(dy) ⇒ Object
295 296 297 298 |
# File 'lib/dnn/core/layers.rb', line 295 def backward(dy) dy[@mask] = 0 dy end |
#forward(x) ⇒ Object
284 285 286 287 288 289 290 291 292 293 |
# File 'lib/dnn/core/layers.rb', line 284 def forward(x) 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
300 301 302 |
# File 'lib/dnn/core/layers.rb', line 300 def to_hash super({dropout_ratio: @dropout_ratio, seed: @seed, use_scale: @use_scale}) end |