@@ -14,50 +14,47 @@ def __init__(self, layer_number, node_pos, cifar_stat={'patch_mean': [], 'patch_
14
14
self .layer_number = layer_number
15
15
self .node_position = node_pos
16
16
self .belief = []
17
- # cifarStat = load_cifar(4)# to be used for Normalization and Whitening
18
- # Purposes
19
17
self .patch_mean = cifar_stat ['patch_mean' ]
20
18
self .patch_std = cifar_stat ['patch_std' ]
21
19
self .v = cifar_stat ['whiten_mat' ]
20
+ self .learning_algorithm = []
21
+ self .input = []
22
+ self .algorithm_choice = []
22
23
23
24
def init_node_learning_params (self , algorithm_choice , alg_params ):
24
25
self .algorithm_choice = algorithm_choice
25
26
if algorithm_choice == 'Clustering' :
26
27
cents_per_layer = alg_params ['num_cents_per_layer' ]
27
- # input_width = input_widths[layer_num]
28
+
28
29
if self .layer_number == 0 :
29
30
input_width = 48
30
31
else :
31
32
input_width = cents_per_layer [self .layer_number - 1 ] * 4
32
33
self .learning_algorithm = Clustering (alg_params ['mr' ], alg_params ['vr' ], alg_params ['sr' ], input_width ,
33
34
alg_params ['num_cents_per_layer' ][self .layer_number ], self .node_position )
34
- # mr, vr, sr, di, ce, node_id
35
35
else :
36
36
self .belief = np .ones ((alg_params [self .layer_number ][1 ], 1 ))
37
37
self .algorithm_choice = algorithm_choice
38
38
self .learning_algorithm = NNSAE (
39
39
alg_params [self .layer_number ][0 ], alg_params [self .layer_number ][1 ])
40
40
41
- def load_input (self , In ):
41
+ def load_input (self , in_ ):
42
42
if self .layer_number == 0 :
43
- In = In - self .patch_mean
44
- In = In / self .patch_std
45
- In = In .dot (self .v )
46
- self .input = In
43
+ in_ = in_ - self .patch_mean
44
+ in_ = in_ / self .patch_std
45
+ in_ = in_ .dot (self .v )
46
+ self .input = in_
47
47
48
48
def do_node_learning (self , mode ):
49
49
if self .algorithm_choice == 'Clustering' :
50
50
self .learning_algorithm .update_node (self .input , mode )
51
51
self .belief = self .learning_algorithm .belief
52
52
else :
53
53
self .learning_algorithm .train (self .input )
54
- W = np .transpose ((self .learning_algorithm .W + 0.00005 )/ np .sum ((self .learning_algorithm .W + 0.00005 ),0 ))
55
- input_ = self .input / np .sum (self .input ,0 )
56
- # input_ = np.transpose(self.input)/np.sum(np.transpose(self.input),0)
57
- # print np.shape(W)
58
- # print np.shape(input_)
59
- # activations = np.dot(W, input_) + 0.00005
60
- dist = W - input_
54
+ eps = np .exp (- 10 )
55
+ weight = np .transpose ((self .learning_algorithm .W + eps )/ np .sum ((self .learning_algorithm .W + eps ), 0 ))
56
+ input_ = self .input / np .sum (self .input , 0 )
57
+ dist = weight - input_
61
58
sq_dist = np .square (dist )
62
59
norm_dist = np .sum (sq_dist , axis = 1 )
63
60
chk = (norm_dist == 0 )
@@ -66,42 +63,5 @@ def do_node_learning(self, mode):
66
63
self .belief [chk ] = 1.0
67
64
else :
68
65
norm_dist = 1 / norm_dist
69
- belief = (norm_dist / sum (norm_dist )) # .reshape(np.shape(self.belief)[0], np.shape(self.belief)[1])
70
- #belief = activations / (np.sum(activations))
71
- self .belief = belief
72
- # belief = np.maximum(activations, 0)
73
- # self.belief = belief
74
- # for K in range(activations.shape[0]):
75
- # belief[K] = max(0.0, float((activations[K] - 0.025)))
76
- # self.belief = np.asarray(belief)/np.sum(belief)
77
-
78
- """
79
-
80
- def calcuatebelief(self, input_):
81
- self.load_inputTonodes(input_, [4,4])
82
- for I in range(len(self.nodes)):
83
- for J in range(len(self.nodes[0])):
84
- W = np.transpose(self.NNSAE.W)
85
- Image = return_node_input(input_, [I*4, J*4], [4,4], 'Adjacent', 'Color')
86
- activations = np.dot(W, np.transpose(Image))
87
- activations = activations/sum(sum(activations))
88
- self.nodes[I][J].Activation = activations
89
- m = np.mean(np.mean(activations,1))
90
- for K in range(activations.shape[0]):
91
- self.nodes[I][J].belief[K,0] = max(0, (activations[K,0] - 0.025))
92
- print self.nodes[0][0].belief"""
93
- """
94
- def produce_belief(self, sqdiff):
95
- """
96
- # Update belief state.
97
- """
98
- normdist = np.sum(sqdiff / self.var, axis=1)
99
- chk = (normdist == 0)
100
- if any(chk):
101
- self.belief = np.zeros((1, self.CENTS))
102
- self.belief[chk] = 1.0
103
- else:
104
- normdist = 1 / normdist
105
- self.belief = (normdist / sum(normdist)).reshape(1, self.CENTS)
106
-
107
- """
66
+ belief = (norm_dist / sum (norm_dist ))
67
+ self .belief = belief / sum (belief ) # Make sure that beliefs are normalized
0 commit comments