the_noggin 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 140726af26cf5fcdc801e8cbff772004a633ce82
4
- data.tar.gz: 31a4f48550f4f4c344c991490116d89b5c1476e9
3
+ metadata.gz: de6e61f2d6ffaf98cd40e8177431801005f326c4
4
+ data.tar.gz: e16db353322473e10baa3cda129a19de2cfb0215
5
5
  SHA512:
6
- metadata.gz: 987df656713a5ea71d144ec684e11f6e0f2a2952fc37ff01363b60ca90b61ea161a2a71a1a8cf75f3fcb11aa9518cbd33bdebac3565fbc290296925fa41f8896
7
- data.tar.gz: 0c2cbc207eaa4e4792da355ab6f377c29b5e271a8cf6ea08051243e453a30886a3120351a268536183c0f79afb65467b3d3cbf1bed5fccc674299d2e9b906214
6
+ metadata.gz: ccea74d19c8843db6c3527333197b54e58d6cfd8b9dd2971db94e4870295a11183492c7f0ed512609cbd9bfcb4b6dd6938aaff694632de306a57a468a532ecca
7
+ data.tar.gz: 5631c33c68292994f93aed91c1e933553358993c8b6c1e32306a29f97f3d442ee6531bd9c18842170ffc8908a8f9d3004ea62e37b7e598aa3c5d952fc64a6ec3
@@ -8,9 +8,11 @@ module Noggin
8
8
 
9
9
  DEFAULTS = {
10
10
  learning_rate: 0.2,
11
+ momentum: 0.2,
11
12
  max_training_laps: 100000,
12
13
  hidden_layer_size: 1,
13
- hidden_layer_node_size: 2
14
+ hidden_layer_node_size: 2,
15
+ log: false
14
16
  }
15
17
 
16
18
  def initialize **opts
@@ -26,9 +28,13 @@ module Noggin
26
28
 
27
29
  def train data_batch
28
30
  init_network(data_batch)unless @ready
29
- options[:max_training_laps].times do
31
+ options[:max_training_laps].times do |i|
30
32
  data_batch.each do |batch|
31
33
  propagate_error! batch[:input], batch[:output]
34
+ if options[:log] && i == options[:max_training_laps] - 1
35
+ print "Last train for input: #{batch[:input]}, expected: #{batch[:output]}"
36
+ pretty_print
37
+ end
32
38
  end
33
39
  end
34
40
  return self
@@ -43,7 +49,9 @@ module Noggin
43
49
 
44
50
  def update_weights!
45
51
  edges.each do |edge|
46
- edge.weight -= options[:learning_rate] * edge.derivative
52
+ delta_weight = options[:learning_rate] * edge.derivative
53
+ edge.weight -= delta_weight + (edge.momentum * edge.previous_weight)
54
+ edge.previous_weight = delta_weight
47
55
  end
48
56
  end
49
57
 
@@ -77,7 +85,7 @@ module Noggin
77
85
  end
78
86
 
79
87
  def connect_nodes origin, dest
80
- edge = Noggin::Node::Edge.new origin: origin, dest: dest
88
+ edge = Noggin::Node::Edge.new origin: origin, dest: dest, momentum: options[:momentum]
81
89
  origin.dests << edge
82
90
  dest.origins << edge
83
91
  end
@@ -5,12 +5,16 @@ module Noggin
5
5
  attr_accessor :origin
6
6
  attr_accessor :dest
7
7
  attr_accessor :weight
8
+ attr_accessor :previous_weight
8
9
  attr_accessor :derivative
10
+ attr_accessor :momentum
9
11
 
10
- def initialize origin: origin, dest: dest, weight: rand(0.20...0.80)
12
+ def initialize origin: origin, dest: dest, weight: rand(0.20...0.80), momentum: 0.1
11
13
  @origin = origin
12
14
  @dest = dest
13
15
  @weight = weight
16
+ @momentum = momentum
17
+ @previous_weight = 0
14
18
  end
15
19
 
16
20
  def input
@@ -1,3 +1,3 @@
1
1
  module Noggin
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
data/spec/network_spec.rb CHANGED
@@ -36,7 +36,7 @@ end
36
36
 
37
37
  describe :xor do
38
38
 
39
- subject { Noggin::Network.new( max_training_laps: 10000, learning_rate: 0.1, hidden_layer_size: 1, hidden_layer_node_size: 2 ) }
39
+ subject { Noggin::Network.new( max_training_laps: 10000, learning_rate: 0.1, hidden_layer_size: 1, hidden_layer_node_size: 2, log: true ) }
40
40
 
41
41
 
42
42
  before do
@@ -49,7 +49,7 @@ describe :xor do
49
49
  end
50
50
 
51
51
  it 'learns xor' do
52
- subject.pretty_print
52
+
53
53
  end
54
54
 
55
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: the_noggin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn