Class: Noggin::Layer

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

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLayer

Returns a new instance of Layer.



6
7
8
# File 'lib/noggin/layer.rb', line 6

def initialize
  @neurons = []
end

Instance Attribute Details

#biasObject

Returns the value of attribute bias.



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

def bias
  @bias
end

#dest_layerObject

Returns the value of attribute dest_layer.



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

def dest_layer
  @dest_layer
end

#neuronsObject

Returns the value of attribute neurons.



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

def neurons
  @neurons
end

#origin_layerObject

Returns the value of attribute origin_layer.



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

def origin_layer
  @origin_layer
end

Class Method Details

.connect_layers(origin_layer, dest_layer, momentum) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/noggin/layer.rb', line 31

def connect_layers origin_layer, dest_layer, momentum
  dest_layer.biased
  dest_layer.neurons.each do |dest_neuron|
    Noggin::Neuron.connect_neurons dest_layer.bias, dest_neuron, momentum
    origin_layer.neurons.each do |origin_neuron|
      Noggin::Neuron.connect_neurons origin_neuron, dest_neuron, momentum
    end
  end
  origin_layer.dest_layer = dest_layer
  dest_layer.origin_layer = origin_layer
end

Instance Method Details

#backward_activate!Object



18
19
20
21
22
23
# File 'lib/noggin/layer.rb', line 18

def backward_activate!
  @neurons.each do |neuron|
    neuron.backward_input = neuron.dests.inject(0){ |sum, edge| sum += edge.backward_output }
    neuron.backward_activate!
  end
end

#biasedObject



25
26
27
# File 'lib/noggin/layer.rb', line 25

def biased
  @bias = Bias.new if bias.nil?
end

#forward_activate!Object



10
11
12
13
14
15
16
# File 'lib/noggin/layer.rb', line 10

def forward_activate!
  @bias.forward_activate!
  @neurons.each do |neuron|
    neuron.forward_input = neuron.origins.inject(0){ |sum, edge| sum += edge.forward_output }
    neuron.forward_activate!
  end
end