class Mirlo::MultilayerPerceptron
Attributes
input_layer[RW]
learning_rate[RW]
momentum[RW]
output_layer[RW]
Public Class Methods
new(learning_rate: DEFAULT_LEARNING_RATE, momentum: 0.9)
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 6 def initialize(learning_rate: DEFAULT_LEARNING_RATE, momentum: 0.9) @learning_rate, @momentum = learning_rate, momentum @hidden_layers = [] end
Public Instance Methods
classify(input)
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 34 def classify(input) input_layer.input = input move_forward output_layer.outputs.first.collect(&:round) end
iterate()
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 11 def iterate # train_set.shuffle! input_layer.inputs = train_set.input_matrix output_layer.expected_targets = train_set.target_matrix move_forward move_backward end
layers()
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 40 def layers [input_layer, hidden_layers, output_layer].flatten.compact end
move_backward()
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 26 def move_backward output_layer.calculate_errors hidden_layers.reverse.each { |layer| layer.calculate_errors } output_layer.update_weights(learning_rate, momentum) hidden_layers.reverse.each { |layer| layer.update_weights(learning_rate, momentum) } end
move_forward(inputs = nil)
click to toggle source
# File lib/mirlo/ann/multilayer_perceptron.rb, line 21 def move_forward(inputs = nil) hidden_layers.each(&:calculate_activations) output_layer.calculate_activations end