class Chainer::Reporter
Attributes
observation[RW]
observer_names[RW]
Public Class Methods
new()
click to toggle source
# File lib/chainer/reporter.rb, line 11 def initialize @observer_names = {} @observation = {} end
report_scope(observation) { || ... }
click to toggle source
# File lib/chainer/reporter.rb, line 21 def self.report_scope(observation) current = @@reporters[-1] old = current.observation current.observation = observation yield current.observation = old end
save_report(values, observer=nil)
click to toggle source
# File lib/chainer/reporter.rb, line 16 def self.save_report(values, observer=nil) reporter = @@reporters[-1] reporter.report(values, observer) end
Public Instance Methods
add_observer(name, observer)
click to toggle source
# File lib/chainer/reporter.rb, line 46 def add_observer(name, observer) @observer_names[observer.object_id] = name end
add_observers(prefix, observers, skipself: true)
click to toggle source
# File lib/chainer/reporter.rb, line 50 def add_observers(prefix, observers, skipself: true) observers.call(skipself: skipself) do |name, observer| @observer_names[observer.object_id] = "#{prefix}#{name}" end end
report(values, observer=nil)
click to toggle source
# File lib/chainer/reporter.rb, line 29 def report(values, observer=nil) # TODO: keep_graph_on_report option if observer observer_id = observer.object_id unless @observer_names.keys.include?(observer_id) raise "Given observer is not registered to the reporter." end observer_name = @observer_names[observer_id] values.each do |key, value| name = "#{observer_name}/#{key}" @observation[name] = value end else @observation.update(values) end end
scope(observation) { || ... }
click to toggle source
# File lib/chainer/reporter.rb, line 56 def scope(observation) @@reporters << self old = @observation @observation = observation yield @observation = old @@reporters.pop end