class Chainer::Optimizer

Attributes

target[RW]

Public Instance Methods

_call_hook(hook) click to toggle source
# File lib/chainer/optimizer.rb, line 32
def _call_hook(hook)
  if hook.methods.include?(:call_for_each_param)
    @target.params do |param|
      hook.(param.update_rule, param)
    end
  else
    hook.(self)
  end
end
add_hook(hook, name: nil) click to toggle source
# File lib/chainer/optimizer.rb, line 13
def add_hook(hook, name: nil)
  if !hook.class.method_defined?(:call)
    raise TypeError, 'hook function is not callable'
  end

  name = hook.name if name.nil?
  if @hooks[name]
    raise TypeError, "hook #{name} already exists"
  end
  @hooks[name] = hook
end
call_hooks() click to toggle source
# File lib/chainer/optimizer.rb, line 25
def call_hooks
  @hooks.values.each do |hook|
    _call_hook(hook)
    reallocate_cleared_grads
  end
end
serialize(serializer) click to toggle source
# File lib/chainer/optimizer.rb, line 42
def serialize(serializer)
  @t = serializer.('t', @t)
  @epoch = serializer.('epoch', @epoch)
  
  @target.namedparams() do |(name, param)|
    if param.respond_to?(:update_rule)
      param.update_rule.serialize(serializer[name.to_s])
    end
  end
end
setup(link) click to toggle source
# File lib/chainer/optimizer.rb, line 5
def setup(link)
  @target = link
  @t = 0
  @epoch = 0
  
  @hooks = {}
end