ruby_brain 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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: