Class: DNN::Optimizers::Nesterov

Inherits:
SGD show all
Defined in:
lib/dnn/core/optimizers.rb

Instance Attribute Summary

Attributes inherited from SGD

#momentum

Attributes inherited from Optimizer

#learning_rate

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SGD

#to_hash

Methods inherited from Optimizer

#to_hash

Constructor Details

#initialize(learning_rate = 0.01, momentum: 0.9) ⇒ Nesterov

Returns a new instance of Nesterov.



60
61
62
# File 'lib/dnn/core/optimizers.rb', line 60

def initialize(learning_rate = 0.01, momentum: 0.9)
  super(learning_rate, momentum: momentum)
end

Class Method Details

.load_hash(hash) ⇒ Object



56
57
58
# File 'lib/dnn/core/optimizers.rb', line 56

def self.load_hash(hash)
  self.new(hash[:learning_rate], momentum: hash[:momentum])
end

Instance Method Details

#update(layer) ⇒ Object



64
65
66
67
68
69
70
71
72
# File 'lib/dnn/core/optimizers.rb', line 64

def update(layer)
  @v[layer] ||= {}
  layer.params.each_key do |key|
    @v[layer][key] ||= 0
    amount = layer.grads[key] * @learning_rate
    @v[layer][key] = @v[layer][key] * @momentum - amount
    layer.params[key] = (layer.params[key] + @momentum**2 * @v[layer][key]) - (1 + @momentum) * amount
  end
end