Class: Chainer::Reporter

Inherits:
Object
  • Object
show all
Includes:
ReportService
Defined in:
lib/chainer/reporter.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeReporter

Returns a new instance of Reporter.



11
12
13
14
# File 'lib/chainer/reporter.rb', line 11

def initialize
  @observer_names = {}
  @observation = {}
end

Instance Attribute Details

#observationObject

Returns the value of attribute observation.



9
10
11
# File 'lib/chainer/reporter.rb', line 9

def observation
  @observation
end

#observer_namesObject

Returns the value of attribute observer_names.



9
10
11
# File 'lib/chainer/reporter.rb', line 9

def observer_names
  @observer_names
end

Class Method Details

.report_scope(observation) ⇒ Object



21
22
23
24
25
26
27
# 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) ⇒ Object



16
17
18
19
# File 'lib/chainer/reporter.rb', line 16

def self.save_report(values, observer=nil)
  reporter = @@reporters[-1]
  reporter.report(values, observer)
end

Instance Method Details

#add_observer(name, observer) ⇒ Object



46
47
48
# 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) ⇒ Object



50
51
52
53
54
# 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) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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) ⇒ Object



56
57
58
59
60
61
62
63
# File 'lib/chainer/reporter.rb', line 56

def scope(observation)
  @@reporters << self
  old = @observation
  @observation = observation
  yield
  @observation = old
  @@reporters.pop
end