class RubyBrain::Nodes::Neuron

Attributes

left_side_weights[RW]
order_index[RW]
right_side_weights[RW]
this_backward_output[R]
this_output[R]

Public Class Methods

new(gain=1.0) click to toggle source
# File lib/ruby_brain/nodes.rb, line 6
def initialize(gain=1.0)
  @gain = gain
  @this_output = nil
  @this_backward_output = nil
end

Public Instance Methods

get_backward_sigmoid_output(backward_sigmoid_input) click to toggle source
# File lib/ruby_brain/nodes.rb, line 16
def get_backward_sigmoid_output(backward_sigmoid_input)
  @gain * (1 - @this_output) * @this_output * backward_sigmoid_input
end
get_sigmoid_output(sigmoid_input) click to toggle source
# File lib/ruby_brain/nodes.rb, line 12
def get_sigmoid_output(sigmoid_input)
  1.0 / (1 + Math.exp(-1 * @gain * sigmoid_input))
end
output_of_backward_calc(backward_inputs) click to toggle source
# File lib/ruby_brain/nodes.rb, line 28
def output_of_backward_calc(backward_inputs)
  sigmoid_backward_input = 0.0
  if @right_side_weights.nil?
    sigmoid_backward_input = backward_inputs[@order_index]
  else
    @right_side_weights[@order_index].zip(backward_inputs).each do |weight, input|
      sigmoid_backward_input += input * weight
    end
  end
  @this_backward_output = get_backward_sigmoid_output(sigmoid_backward_input)
end
output_of_forward_calc(inputs) click to toggle source
# File lib/ruby_brain/nodes.rb, line 20
def output_of_forward_calc(inputs)
  sigmoid_input = 0.0
  @left_side_weights.transpose[@order_index].zip(inputs).each do |weight, input|
    sigmoid_input += input * weight
  end
  @this_output = get_sigmoid_output(sigmoid_input)
end