Class: DNN::Layers::Dropout

Inherits:
Layer
  • Object
show all
Defined in:
lib/dnn/core/layers.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Layer

#build, #built?, #prev_layer, #shape

Constructor Details

#initialize(dropout_ratio) ⇒ Dropout

Returns a new instance of Dropout.



221
222
223
224
225
# File 'lib/dnn/core/layers.rb', line 221

def initialize(dropout_ratio)
  super()
  @dropout_ratio = dropout_ratio
  @mask = nil
end

Instance Attribute Details

#dropoit_ratio ⇒ Object (readonly)

Returns the value of attribute dropoit_ratio.



219
220
221
# File 'lib/dnn/core/layers.rb', line 219

def dropoit_ratio
  @dropoit_ratio
end

Class Method Details

.load(hash) ⇒ Object



231
232
233
# File 'lib/dnn/core/layers.rb', line 231

def self.load(hash)
  self.new(hash[:dropout_ratio])
end

.load_hash(hash) ⇒ Object



227
228
229
# File 'lib/dnn/core/layers.rb', line 227

def self.load_hash(hash)
  self.new(hash[:dropout_ratio])
end

Instance Method Details

#backward(dout) ⇒ Object



245
246
247
248
# File 'lib/dnn/core/layers.rb', line 245

def backward(dout)
  dout[@mask] = 0 if @model.training?
  dout
end

#forward(x) ⇒ Object



235
236
237
238
239
240
241
242
243
# File 'lib/dnn/core/layers.rb', line 235

def forward(x)
  if @model.training?
    @mask = SFloat.ones(*x.shape).rand < @dropout_ratio
    x[@mask] = 0
  else
    x *= (1 - @dropout_ratio)
  end
  x
end

#to_hash ⇒ Object



250
251
252
# File 'lib/dnn/core/layers.rb', line 250

def to_hash
  super({dropout_ratio: @dropout_ratio})
end