Noggin
Ruby Neural Network implementation using backpropagation and gradient descent for training
network = Noggin::Network.new
network.train([
{ input: [0, 0], output: 0 },
{ input: [0, 1], output: 1 },
{ input: [1, 0], output: 1 },
{ input: [1, 1], output: 0 }
])
network.run [0, 0] # 0.0163
network.run [0, 1] # 0.9573
network.run [1, 0] # 0.9702
network.run [1, 1] # 0.0142
Installation
gem install the_noggin
Options
Noggin::Network.new(
max_training_laps: 100000, # How many propgation of errors to do when training
learning_rate: 0.1, # How fast the network learns
hidden_layer_size: 1 , # Number of hidden layers
hidden_layer_node_size: 2 # Number of nodes each hidden layer has
)
Print Network
network.pretty_print
------ ------ --------------
| | -EDGE--(w: 0.438443, d: 0.01759) | | -EDGE--(w: 0.515923, d: 0.09704) | ed: 0.668486
| | -EDGE--(w: 0.746539, d: 0.013825) ------ | d: 0.148145
------ ------ | e: 0.223437
------ | | -EDGE--(w: 0.485781, d: 0.11099) | o: 0.668486
| | -EDGE--(w: 0.199745, d: 0.01759) ------ --------------
| | -EDGE--(w: 0.345684, d: 0.013825)
------