ruby_brain 0.1.3 → 0.1.4

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: b43bc1abf123431de79d446ad0e334d3c6713540
4
- data.tar.gz: 1b287d1478d25bfa5f68cc8820d0ea5ce0197649
3
+ metadata.gz: d712cf44173c097c607a48bfceba19ae212ec5d9
4
+ data.tar.gz: b2c9633cce47237cf83288607907c3964a63966f
5
5
  SHA512:
6
- metadata.gz: 4269df6eca4072bab65690aa31f7dc463a48b04269b49024e1ced0742040c4872bf0c3806fc97b5fd72250de7c3b31ecd194429b08d8d9f1f7e4eb976adb093a
7
- data.tar.gz: c1f2ab9cb08885c2fd7cc41225fafdb7330613e432580ca2e1e41aa4f75556a1685baa549a211e7c0c7bf62b429b70df911560b7a84728771696d9a7426c9bba
6
+ metadata.gz: 262286fed915e53b01a2f558585f548a900b19b58034a95ba3d94fd573e37cae6c1974c491807d6c96eb6877702845355e126dbc3e203cbff6e6e1fe28f24ead
7
+ data.tar.gz: 338a2629c0173c0c7068ec7eb5789213f5d731ce9ac233ee65de1a1b18c7f5e82e6d9bb072a3a932d8111094265b1b704136a3dd1576d467d184f8f14337cf9c
data/README.org CHANGED
@@ -78,8 +78,8 @@
78
78
  # 1 output
79
79
  [2, 4, 2, 1]
80
80
  #+END_SRC
81
-
82
- So, a netowrk is created by
81
+
82
+ So, a network is created by
83
83
  #+BEGIN_SRC ruby
84
84
  a_network = RubyBrain::Network.new([2, 5, 1])
85
85
 
@@ -0,0 +1,62 @@
1
+ # coding: utf-8
2
+ require 'ruby_brain'
3
+ require 'ruby_brain/dataset/mnist/data'
4
+
5
+
6
+ dataset = RubyBrain::DataSet::Mnist::data
7
+ training_dataset = dataset.first
8
+ test_dataset = dataset.last
9
+
10
+
11
+ training_dataset.keys # => [:input, :output]
12
+ test_dataset.keys # => [:input, :output]
13
+
14
+ training_dataset[:input].size # => 60000
15
+ training_dataset[:input].first.size # => 784
16
+
17
+ training_dataset[:output].size # => 60000
18
+ training_dataset[:output].first.size # => 10
19
+
20
+ test_dataset[:input].size # => 10000
21
+ test_dataset[:input].first.size # => 784
22
+
23
+ test_dataset[:output].size # => 10000
24
+ test_dataset[:output].first.size # => 10
25
+
26
+
27
+ # use first 5000 pictures for training
28
+ NUM_TRAIN_DATA = 5000
29
+ training_input = training_dataset[:input][0..(NUM_TRAIN_DATA-1)]
30
+ training_supervisor = training_dataset[:output][0..(NUM_TRAIN_DATA-1)]
31
+
32
+ # use all pictures within test_dataset
33
+ test_input = test_dataset[:input]
34
+ test_supervisor = test_dataset[:output]
35
+
36
+ # network structure [784, 50, 10]
37
+ network = RubyBrain::Network.new([training_input.first.size, 50, training_supervisor.first.size])
38
+ # learning rate is 0.7
39
+ network.learning_rate = 0.7
40
+ # initialize network
41
+ network.init_network
42
+
43
+ network.learn(training_input, training_supervisor, max_training_count=100, tolerance=0.0004, monitoring_channels=[:best_params_training])
44
+
45
+ ### turn on this snippet to print pictures as ascii art.
46
+ #
47
+ # test_input.each_with_index do |input, i|
48
+ # input.each_with_index do |e, j|
49
+ # print(e > 0.3 ? 'x' : ' ')
50
+ # puts if (j % 28) == 0
51
+ # end
52
+ # puts
53
+ # supervisor_label = test_supervisor[i].index(test_supervisor[i].max)
54
+ # predicated_output = network.get_forward_outputs(input)
55
+ # predicated_label = predicated_output.index(predicated_output.max)
56
+ # puts "test_supervisor: #{supervisor_label}"
57
+ # puts "predicate: #{predicated_label}"
58
+ # results << (supervisor_label == predicated_label)
59
+ # puts "------------------------------------------------------------"
60
+ # end
61
+
62
+ puts "accuracy: #{results.count(true).to_f/results.size}"
@@ -0,0 +1,11 @@
1
+ require "ruby_brain"
2
+
3
+ X = (0..1).step(0.01).to_a
4
+ Y_IDEAL = X.map {|x| (0.75 * Math.sin(x*2*Math::PI) - 0.2 * Math.cos(5*x*2*Math::PI - 0.023) + 1) / 2}
5
+ Y = [Y_IDEAL, Array.new(X.size) {rand(-0.05..0.05)}].transpose.map {|e| e.inject(:+)}
6
+ a_network = RubyBrain::Network.new([1, 13, 6, 1])
7
+ a_network.init_network
8
+ a_network.learning_rate = 0.5
9
+ a_network.learn(X.map{|e| [e]}, Y.map{|e| [e]}, max_tra2ining_count=40000, tolerance=0.0004, monitoring_channels=[:best_params_training])
10
+ Y_PREDICATED = X.map{|e| [e]}.map {|a| a_network.get_forward_outputs(a).first}
11
+
@@ -1,5 +1,4 @@
1
1
  require "ruby_brain/version"
2
- require 'forwardable'
3
2
  require 'yaml'
4
3
  require 'pp'
5
4
 
@@ -1,8 +1,5 @@
1
1
  module RubyBrain
2
2
  class Network
3
- extend Forwardable
4
- def_delegators :@weights_set, :overwrite_weights, :get_weights_as_array
5
-
6
3
  attr_accessor :learning_rate
7
4
 
8
5
  # Constructor of Network class
@@ -138,7 +135,7 @@ module RubyBrain
138
135
  raise RubyBrain::Exception::TrainingDataError if inputs_set.size != outputs_set.size
139
136
  # raise "inputs_set and outputs_set has different size!!!!" if inputs_set.size != outputs_set.size
140
137
 
141
- best_error = 9999999999999
138
+ best_error = Float::INFINITY
142
139
  best_weights_array = []
143
140
  max_training_count.times do |i_training|
144
141
  accumulated_errors = 0.0 # for rms
@@ -1,3 +1,3 @@
1
1
  module RubyBrain
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby_brain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - elgoog
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-02 00:00:00.000000000 Z
11
+ date: 2016-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -87,7 +87,9 @@ files:
87
87
  - examples/mnist.ipynb
88
88
  - examples/mnist.rb
89
89
  - examples/mnist2.rb
90
+ - examples/mnist_standalone.rb
90
91
  - examples/wave_form.ipynb
92
+ - examples/wave_form_standalone.rb
91
93
  - lib/ruby_brain.rb
92
94
  - lib/ruby_brain/dataset/mnist/data.rb
93
95
  - lib/ruby_brain/dataset/mnist/test_mnist.rb
@@ -120,9 +122,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
122
  version: '0'
121
123
  requirements: []
122
124
  rubyforge_project:
123
- rubygems_version: 2.5.1
125
+ rubygems_version: 2.6.6
124
126
  signing_key:
125
127
  specification_version: 4
126
128
  summary: NeuralNet/DeepLearning implement for Ruby
127
129
  test_files: []
128
- has_rdoc: