Пример #1
0
    def gaussian_activation(self):
        x = self.dists
        radii = zeros(self.dists.shape) * 0.0

        for u,conn_dict in enumerate(self.connections):
            neighbors = take(self.weights,conn_dict.keys())
            radii[u] = average(matrixnorm(neighbors-self.weights[u]))

        self.__activation = gaussian(x,radii/2)
    def find_in_radius(self,key,radius):
        if not self.db:
            return [],[]
        X = array([x for x,v in self.db])
        dists = matrixnorm(key-X)

        close_enough = nonzero(dists <= radius)
        return ([self.db[i] for i in close_enough],
                [dists[i] for i in close_enough])
    def gaussian_activation(self):
        x = self.dists
        radii = zeros(self.dists.shape) * 0.0

        for u, conn_dict in enumerate(self.connections):
            neighbors = take(self.weights, conn_dict.keys())
            radii[u] = average(matrixnorm(neighbors - self.weights[u]))

        self.__activation = gaussian(x, radii / 2)
Пример #4
0
    def uniform_gaussian_activation(self):
        x = self.dists

        total = 0.0
        count = 0

        for u,conn_dict in enumerate(self.connections):
            neighbors = take(self.weights,conn_dict.keys())
            total += sum(matrixnorm(neighbors-self.weights[u]))
            count += len(conn_dict)

        self.__activation = gaussian(x,(total/count)/2)
    def uniform_gaussian_activation(self):
        x = self.dists

        total = 0.0
        count = 0

        for u, conn_dict in enumerate(self.connections):
            neighbors = take(self.weights, conn_dict.keys())
            total += sum(matrixnorm(neighbors - self.weights[u]))
            count += len(conn_dict)

        self.__activation = gaussian(x, (total / count) / 2)
    def k_nearest(self,key,k):

        # TODO: These distance computations can be further optimized
        # if the keys are stored as a matrix instead of as separate vectors.
        # However that would require changes in the VectorTree class, too.
        if not self.db:
            return [],[]
        X = array([x for x,v in self.db])
        dists = matrixnorm(key-X)
        sorted_indices = argsort(dists)
        
        return ([self.db[i] for i in sorted_indices[:k]],
                [dists[i] for i in sorted_indices[:k]])
 def any_in_radius(self,key,radius):
     if not self.db:
         return False
     X = array([x for x,v in self.db])
     dists = matrixnorm(key-X)
     return sometrue(dists <= radius)
Пример #8
0
 def present_input(self,X):
     self.dists = matrixnorm(self.weights-X)
     self.last_input = X
     self.new_input = True
 def present_input(self, X):
     self.dists = matrixnorm(self.weights - X)
     self.last_input = X
     self.new_input = True