def grow(self, bmu): # type: (object) -> object p = self.grid[bmu] up = p + np.array([0, +1]) right = p + np.array([+1, 0]) down = p + np.array([0, -1]) left = p + np.array([-1, 0]) neighbors = np.array([up, right, down, left]) direction = 0 for nei in neighbors: try: self.errors[str(list(nei))] += self.errors[bmu] * self.fd except KeyError: try: w1, w2, b1, b2 = self.type_b(nei, direction) if np.isnan(w1).any(): print 'shit' except: try: w1, w2, b1, b2 = self.type_a(nei, direction) if np.isnan(w1).any(): print 'shit' except: try: w1, w2, b1, b2 = self.type_c(nei, direction) if np.isnan(w1).any(): print 'shit' except: w1 = None w2 = None#np.ones((self.hid, self.dims)) b1 = None#np.ones(self.hid) b2 = None#np.ones(self.dims) # if new_a.any(): # if newf_c.any(): # # w.fill(0.5) # else: # w = new_c # else: # w = new_a # else: # w = new_b AE = AutoEncoder(self.dims, self.hid, self.s1, self.m1) # if np.isnan(w1).any(): # print 'shit' AE.set_params(w1, w2, b1, b2) self.learners[str(list(nei))] = AE self.grid[str(list(nei))] = list(nei) self.errors[str(list(nei))] = self.GT/2 self.gen[str(list(nei))] = self.current_gen self.hits[str(list(nei))] = 0 direction += 1 self.errors[bmu] = self.GT / 2
def grow(self, bmu): # type: (object) -> object p = self.grid[bmu] up = p + np.array([0, +1]) right = p + np.array([+1, 0]) down = p + np.array([0, -1]) left = p + np.array([-1, 0]) neighbors = np.array([up, right, down, left]) for nei in neighbors: try: self.errors[str(list(nei))] += self.errors[bmu] * self.fd except KeyError: w1, w2, b1, b2 = self.get_new_weight(bmu, nei) AE = AutoEncoder(self.dims, self.hid, self.s1, self.m1, gaussian=self.gaussian) AE.set_params(w1, w2, b1, b2) self.learners[str(list(nei))] = AE self.grid[str(list(nei))] = list(nei) self.errors[str(list(nei))] = self.GT/2 self.gen[str(list(nei))] = self.current_gen self.hits[str(list(nei))] = 0 self.errors[bmu] = self.GT / 2