Example #1
0
    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
Example #2
0
    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