class Mirlo::MultilayerPerceptron

Attributes

hidden_layers[RW]
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