Class: DNN::Optimizers::SGD

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

Instance Attribute Summary collapse

Attributes inherited from Optimizer

#learning_rate

Instance Method Summary collapse

Constructor Details

#initialize(learning_rate = 0.01, momentum: 0) ⇒ SGD

Returns a new instance of SGD.



20
21
22
23
24
# File 'lib/dnn/core/optimizers.rb', line 20

def initialize(learning_rate = 0.01, momentum: 0)
  super(learning_rate)
  @momentum = momentum
  @amounts = {}
end

Instance Attribute Details

#momentumObject

Returns the value of attribute momentum.



18
19
20
# File 'lib/dnn/core/optimizers.rb', line 18

def momentum
  @momentum
end

Instance Method Details

#update(layer) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/dnn/core/optimizers.rb', line 26

def update(layer)
  amount = if @amounts[layer]
    @amounts[layer]
  else
    @amounts[layer] = {}
  end
  layer.params.each_key do |key|
    amount[key] = layer.grads[key] * @learning_rate
    if @momentum > 0
      @amounts[layer][key] ||= 0
      amount[key] += @momentum * @amounts[layer][key]
      @amounts[layer] = amount
    end
    layer.params[key] -= amount[key]
  end
end