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