Module: Qoa::Utils

Included in:
NeuralNetwork
Defined in:
lib/qoa/utils.rb

Instance Method Summary collapse

Instance Method Details

#load_model(file_path) ⇒ Object



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/qoa/utils.rb', line 24

def load_model(file_path)
  model_data = JSON.parse(File.read(file_path), symbolize_names: true)

  @input_nodes = model_data[:input_nodes]
  @hidden_layers = model_data[:hidden_layers]
  @output_nodes = model_data[:output_nodes]
  @learning_rate = model_data[:learning_rate]
  @activation_func = model_data[:activation_func].to_sym
  @dropout_rate = model_data[:dropout_rate]
  @decay_rate = model_data[:decay_rate]
  @epsilon = model_data[:epsilon]
  @batch_size = model_data[:batch_size]

  @layers = model_data[:weights].map { |w| Qoa::Layers::Layer.new(w.first.size, w.size) }
  @layers.each_with_index do |layer, i|
    layer.weights = model_data[:weights][i]
  end
end

#save_model(file_path) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/qoa/utils.rb', line 5

def save_model(file_path)
  model_data = {
    input_nodes: @input_nodes,
    hidden_layers: @hidden_layers,
    output_nodes: @output_nodes,
    learning_rate: @learning_rate,
    activation_func: @activation_func,
    dropout_rate: @dropout_rate,
    decay_rate: @decay_rate,
    epsilon: @epsilon,
    batch_size: @batch_size,
    weights: @layers.map(&:weights),
  }

  File.open(file_path, 'w') do |f|
    f.write(JSON.pretty_generate(model_data))
  end
end