Class: TNN::HopFieldNetwork
- Inherits:
-
Object
- Object
- TNN::HopFieldNetwork
- Defined in:
- lib/t_nn/hop_field_network.rb
Instance Attribute Summary collapse
-
#dim ⇒ Object
Returns the value of attribute dim.
-
#is_train ⇒ Object
Returns the value of attribute is_train.
-
#net ⇒ Object
Returns the value of attribute net.
-
#nodes ⇒ Object
Returns the value of attribute nodes.
-
#threshold ⇒ Object
Returns the value of attribute threshold.
-
#train_datas ⇒ Object
Returns the value of attribute train_datas.
Instance Method Summary collapse
- #calc_connected_factor(target_node_id) ⇒ Object
-
#energy ⇒ Object
calc energy function.
-
#initialize(threshold = nil, data) ⇒ HopFieldNetwork
constructor
A new instance of HopFieldNetwork.
- #load_train_data(data) ⇒ Object
- #memorize ⇒ Object
-
#remember(datas) ⇒ Object
.
- #update_external_w(node_id, i_w) ⇒ Object
Constructor Details
#initialize(threshold = nil, data) ⇒ HopFieldNetwork
Returns a new instance of HopFieldNetwork.
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/t_nn/hop_field_network.rb', line 9 def initialize(threshold=nil, data) if threshold == nil @threshold = 0.0 else @threshold = threshold end @train_datas=Array.new load_train_data(data) @nodes = Array.new(@train_datas[0].length, 1.0) @dim = @train_datas[0].length @net = Array.new(@dim**2,0.0) end |
Instance Attribute Details
#dim ⇒ Object
Returns the value of attribute dim.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def dim @dim end |
#is_train ⇒ Object
Returns the value of attribute is_train.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def is_train @is_train end |
#net ⇒ Object
Returns the value of attribute net.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def net @net end |
#nodes ⇒ Object
Returns the value of attribute nodes.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def nodes @nodes end |
#threshold ⇒ Object
Returns the value of attribute threshold.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def threshold @threshold end |
#train_datas ⇒ Object
Returns the value of attribute train_datas.
7 8 9 |
# File 'lib/t_nn/hop_field_network.rb', line 7 def train_datas @train_datas end |
Instance Method Details
#calc_connected_factor(target_node_id) ⇒ Object
56 57 58 59 60 61 62 |
# File 'lib/t_nn/hop_field_network.rb', line 56 def calc_connected_factor(target_node_id) sum = 0.0 @nodes.each_with_index do |node,node_id| sum += @net[target_node_id*@dim + node_id] * node if (target_node_id != node_id ) end return sum end |
#energy ⇒ Object
calc energy function
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/t_nn/hop_field_network.rb', line 75 def energy sum = 0.0 @nodes.each_with_index do |node,node_id| @nodes.each_with_index do |node2,node2_id| sum += @net[node2_id*@dim + node_id] * node * node2 if ( node != node2) end end sum2 = 0.0 @nodes.each do |node| sum2 += @threshold * node end result = (-1.0/2.0)*sum + sum2 return result end |
#load_train_data(data) ⇒ Object
92 93 94 |
# File 'lib/t_nn/hop_field_network.rb', line 92 def load_train_data(data) @train_datas.push(data) end |
#memorize ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/t_nn/hop_field_network.rb', line 23 def memorize @nodes.length.times do |node_id| @nodes.length.times do |node2_id| sum = 0.0 @train_datas.each do |train_data| sum += train_data[node_id] * train_data[node2_id] if(node_id != node2_id) end @net[node_id * @dim + node2_id] = sum @net[node2_id*@dim + node_id] = sum end end end |
#remember(datas) ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/t_nn/hop_field_network.rb', line 41 def remember(datas) @nodes = datas e = energy loop do @nodes.each_with_index do |node,node_id| internal_w = calc_connected_factor(node_id) update_external_w(node_id,internal_w) end new_e = energy break if (e == new_e) e = new_e end puts "energy : #{energy}" end |
#update_external_w(node_id, i_w) ⇒ Object
64 65 66 67 68 69 70 |
# File 'lib/t_nn/hop_field_network.rb', line 64 def update_external_w(node_id,i_w) if i_w >= @threshold @nodes[node_id] = 1.0 else @nodes[node_id] = -1.0 end end |