Class: Noggin::Neuron

Inherits:
Object
  • Object
show all
Defined in:
lib/noggin/neuron.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeNeuron

Returns a new instance of Neuron.



7
8
9
10
# File 'lib/noggin/neuron.rb', line 7

def initialize
  @origins = []
  @dests = []
end

Instance Attribute Details

#backward_error_outputObject

Returns the value of attribute backward_error_output.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def backward_error_output
  @backward_error_output
end

#backward_inputObject

Returns the value of attribute backward_input.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def backward_input
  @backward_input
end

#backward_outputObject

Returns the value of attribute backward_output.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def backward_output
  @backward_output
end

#derivativeObject

Returns the value of attribute derivative.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def derivative
  @derivative
end

#destsObject

Returns the value of attribute dests.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def dests
  @dests
end

#expectedObject

Returns the value of attribute expected.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def expected
  @expected
end

#forward_error_outputObject

Returns the value of attribute forward_error_output.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def forward_error_output
  @forward_error_output
end

#forward_inputObject

Returns the value of attribute forward_input.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def forward_input
  @forward_input
end

#forward_outputObject

Returns the value of attribute forward_output.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def forward_output
  @forward_output
end

#originsObject

Returns the value of attribute origins.



4
5
6
# File 'lib/noggin/neuron.rb', line 4

def origins
  @origins
end

Class Method Details

.connect_neurons(origin, dest, momentum) ⇒ Object



39
40
41
42
43
# File 'lib/noggin/neuron.rb', line 39

def connect_neurons origin, dest, momentum
  edge = Noggin::Edge.new origin: origin, dest: dest, momentum: momentum
  origin.dests << edge
  dest.origins << edge
end

Instance Method Details

#backward_activate!Object



21
22
23
24
25
26
27
# File 'lib/noggin/neuron.rb', line 21

def backward_activate!
  @backward_output = @forward_output * ( 1 - @forward_output ) * @backward_input
  origins.each do |edge|
    edge.backward_input = @backward_output
    edge.backward_activate!
  end
end

#backward_activate_error!Object



33
34
35
36
# File 'lib/noggin/neuron.rb', line 33

def backward_activate_error!
  @backward_error_output = @forward_output - @expected
  @backward_input = @backward_error_output
end

#forward_activate!Object



12
13
14
15
16
17
18
19
# File 'lib/noggin/neuron.rb', line 12

def forward_activate!
  @forward_output = 1 / ( 1 + Math.exp(-1 * forward_input) )
  dests.each do |edge|
    edge.forward_input = @forward_output
    edge.forward_activate!
  end
  forward_activate_error! unless @expected.nil?
end

#forward_activate_error!Object



29
30
31
# File 'lib/noggin/neuron.rb', line 29

def forward_activate_error!
  @forward_error_output = 0.5 * (@expected - @forward_output)**2
end