Class: Neuronet::MLP

Inherits:
Object
  • Object
show all
Includes:
Arrayable, Exportable, NetworkStats, Trainable
Defined in:
lib/neuronet/mlp.rb

Overview

Multi Layer Perceptron(3 layers)

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Arrayable

#[], #each, #each_with_index, #map, #reverse, #size

Methods included from Trainable

#pairs, #pivot, #train

Methods included from Exportable

#export, #export_to_file, #import, #import_from_file

Methods included from NetworkStats

#expected_nju, #expected_nju!, #njus

Constructor Details

#initialize(input_size, middle_size, output_size, input_neuron: InputNeuron, middle_neuron: MiddleNeuron, output_neuron: OutputNeuron) ⇒ MLP

rubocop: disable Metrics



12
13
14
15
16
17
18
19
20
21
# File 'lib/neuronet/mlp.rb', line 12

def initialize(input_size, middle_size, output_size,
               input_neuron: InputNeuron,
               middle_neuron: MiddleNeuron,
               output_neuron: OutputNeuron)
  @input_layer = InputLayer.new(input_size, input_neuron:)
  @middle_layer = MiddleLayer.new(middle_size, middle_neuron:)
  @output_layer = OutputLayer.new(output_size, output_neuron:)
  @middle_layer.connect(@input_layer)
  @output_layer.connect(@middle_layer)
end

Instance Attribute Details

#input_layerObject (readonly)

rubocop: enable Metrics



24
25
26
# File 'lib/neuronet/mlp.rb', line 24

def input_layer
  @input_layer
end

#middle_layerObject (readonly)

rubocop: enable Metrics



24
25
26
# File 'lib/neuronet/mlp.rb', line 24

def middle_layer
  @middle_layer
end

#output_layerObject (readonly)

rubocop: enable Metrics



24
25
26
# File 'lib/neuronet/mlp.rb', line 24

def output_layer
  @output_layer
end

Instance Method Details

#*(other) ⇒ Object



38
39
40
41
42
# File 'lib/neuronet/mlp.rb', line 38

def *(other)
  set(other)
  update
  values
end

#set(values) ⇒ Object



26
27
28
# File 'lib/neuronet/mlp.rb', line 26

def set(values)
  @input_layer.set(values)
end

#to_aObject



44
# File 'lib/neuronet/mlp.rb', line 44

def to_a = [@input_layer, @middle_layer, @output_layer]

#updateObject



30
31
32
# File 'lib/neuronet/mlp.rb', line 30

def update
  @middle_layer.update
end

#valuesObject



34
35
36
# File 'lib/neuronet/mlp.rb', line 34

def values
  @output_layer.values
end