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)
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)
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