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 +4 -4
- data/README.org +2 -2
- data/examples/mnist_standalone.rb +62 -0
- data/examples/wave_form_standalone.rb +11 -0
- data/lib/ruby_brain.rb +0 -1
- data/lib/ruby_brain/network.rb +1 -4
- data/lib/ruby_brain/version.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d712cf44173c097c607a48bfceba19ae212ec5d9
|
4
|
+
data.tar.gz: b2c9633cce47237cf83288607907c3964a63966f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 262286fed915e53b01a2f558585f548a900b19b58034a95ba3d94fd573e37cae6c1974c491807d6c96eb6877702845355e126dbc3e203cbff6e6e1fe28f24ead
|
7
|
+
data.tar.gz: 338a2629c0173c0c7068ec7eb5789213f5d731ce9ac233ee65de1a1b18c7f5e82e6d9bb072a3a932d8111094265b1b704136a3dd1576d467d184f8f14337cf9c
|
data/README.org
CHANGED
@@ -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
|
+
|
data/lib/ruby_brain.rb
CHANGED
data/lib/ruby_brain/network.rb
CHANGED
@@ -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 =
|
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
|
data/lib/ruby_brain/version.rb
CHANGED
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.
|
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-
|
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.
|
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:
|