class DNN::Optimizers::AdaDelta

Attributes

eps[RW]
rho[RW]

Public Class Methods

new(rho: 0.95, eps: 1e-6, clip_norm: nil) click to toggle source

@param [Float] rho Moving average index of past slopes. @param [Float] eps Value to avoid division by zero.

Calls superclass method DNN::Optimizers::Optimizer::new
# File lib/dnn/core/optimizers.rb, line 185
def initialize(rho: 0.95, eps: 1e-6, clip_norm: nil)
  super(clip_norm: clip_norm)
  @rho = rho
  @eps = eps
  @h = {}
  @s = {}
  @status = { h: @h, s: @s }
end

Public Instance Methods

load_hash(hash) click to toggle source
# File lib/dnn/core/optimizers.rb, line 209
def load_hash(hash)
  initialize(rho: hash[:rho], eps: hash[:eps], clip_norm: hash[:clip_norm])
end
to_hash() click to toggle source
Calls superclass method DNN::Optimizers::Optimizer#to_hash
# File lib/dnn/core/optimizers.rb, line 194
def to_hash
  super(rho: @rho, eps: @eps)
end

Private Instance Methods

update_params(params) click to toggle source
# File lib/dnn/core/optimizers.rb, line 198
        def update_params(params)
  params.each do |param|
    @h[param] ||= Xumo::SFloat.zeros(*param.data.shape)
    @s[param] ||= Xumo::SFloat.zeros(*param.data.shape)
    @h[param] = @rho * @h[param] + (1 - @rho) * param.grad**2
    v = (Xumo::NMath.sqrt(@s[param] + @eps) / Xumo::NMath.sqrt(@h[param] + @eps)) * param.grad
    @s[param] = @rho * @s[param] + (1 - @rho) * v**2
    param.data -= v
  end
end