Class: Chainer::Optimizer
- Inherits:
-
Object
- Object
- Chainer::Optimizer
- Defined in:
- lib/chainer/optimizer.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#target ⇒ Object
Returns the value of attribute target.
Instance Method Summary collapse
- #_call_hook(hook) ⇒ Object
- #add_hook(hook, name: nil) ⇒ Object
- #call_hooks ⇒ Object
- #serialize(serializer) ⇒ Object
- #setup(link) ⇒ Object
Instance Attribute Details
#target ⇒ Object
Returns the value of attribute target.
3 4 5 |
# File 'lib/chainer/optimizer.rb', line 3 def target @target end |
Instance Method Details
#_call_hook(hook) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# 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) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# 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 ⇒ Object
25 26 27 28 29 30 |
# 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) ⇒ Object
42 43 44 45 46 47 48 49 50 51 |
# 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) ⇒ Object
5 6 7 8 9 10 11 |
# File 'lib/chainer/optimizer.rb', line 5 def setup(link) @target = link @t = 0 @epoch = 0 @hooks = {} end |