Class: Desiru::Program
- Inherits:
-
Object
- Object
- Desiru::Program
- Defined in:
- lib/desiru/program.rb
Overview
Base class for composing multiple modules into programs Implements composition patterns for complex AI workflows
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#metadata ⇒ Object
readonly
Returns the value of attribute metadata.
-
#modules ⇒ Object
readonly
Returns the value of attribute modules.
Instance Method Summary collapse
- #call(inputs = {}) ⇒ Object
- #forward(_inputs) ⇒ Object
-
#initialize(config: {}, metadata: {}) ⇒ Program
constructor
A new instance of Program.
- #optimize(optimizer, trainset, valset = nil) ⇒ Object
- #reset ⇒ Object
- #to_h ⇒ Object
Constructor Details
#initialize(config: {}, metadata: {}) ⇒ Program
Returns a new instance of Program.
9 10 11 12 13 14 15 16 |
# File 'lib/desiru/program.rb', line 9 def initialize(config: {}, metadata: {}) @modules = {} @config = default_config.merge(config) @metadata = @execution_trace = [] setup_modules end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
7 8 9 |
# File 'lib/desiru/program.rb', line 7 def config @config end |
#metadata ⇒ Object (readonly)
Returns the value of attribute metadata.
7 8 9 |
# File 'lib/desiru/program.rb', line 7 def @metadata end |
#modules ⇒ Object (readonly)
Returns the value of attribute modules.
7 8 9 |
# File 'lib/desiru/program.rb', line 7 def modules @modules end |
Instance Method Details
#call(inputs = {}) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/desiru/program.rb', line 18 def call(inputs = {}) @execution_trace.clear start_time = Time.now result = forward(inputs) execution_time = Time.now - start_time ProgramResult.new( result, metadata: { execution_time: execution_time, trace: @execution_trace.dup, program: self.class.name } ) rescue StandardError => e handle_error(e) end |
#forward(_inputs) ⇒ Object
38 39 40 |
# File 'lib/desiru/program.rb', line 38 def forward(_inputs) raise NotImplementedError, 'Subclasses must implement #forward' end |
#optimize(optimizer, trainset, valset = nil) ⇒ Object
47 48 49 |
# File 'lib/desiru/program.rb', line 47 def optimize(optimizer, trainset, valset = nil) optimizer.compile(self, trainset: trainset, valset: valset) end |
#reset ⇒ Object
42 43 44 45 |
# File 'lib/desiru/program.rb', line 42 def reset modules.each_value(&:reset) @execution_trace.clear end |
#to_h ⇒ Object
51 52 53 54 55 56 57 58 |
# File 'lib/desiru/program.rb', line 51 def to_h { class: self.class.name, modules: modules.transform_values(&:to_h), config: config, metadata: } end |