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