def __init__(self, filename, eps, point_reader, dist, edge_selector, graph=None, lower=None, upper=None): self.filename = filename self.path = filename self.epsilon = eps self.selector = edge_selector self.d = dist if filename.endswith('.pkl'): file = open(self.path, 'rb') self.points = pickle.load(file) else: self.points = point_reader(filename) printer("starting approx with eps=" + str(self.epsilon)) self.init_graph() if graph is not None and lower is not None and upper is not None: self.lower = lower self.upper = upper self.G = graph self.compute_spanner() self.build_matrix() printer("ending approx with eps=" + str(self.epsilon))
def build_matrix(self): n = len(self.points) matrix = np.zeros(shape=(n, n)) # initialize matrix for i in range(n): printer("Progress: " + str(i / n)) for j in range(i, n): dist = self.d(self.points[i], self.points[j]) # printer("finished frechet dist computation for ", sep="") matrix[i][j] = dist matrix[j][i] = dist print(str(j), end=", ", flush=True) print() self.matrix = matrix
def hausdorff_cloud_r(file): points = [] file.readline() for line in file: cluster = [] line = line.rstrip().split(";") for pt in line: if pt == '': continue pt = pt.split(",") pt = [float(p) for p in pt] pt = np.array(pt) cluster.append(pt) points.append(np.array(cluster)) printer("Done loading points") return points
def __init__(self, filename, point_reader, dist): self.filename = filename self.path = filename self.d = dist if filename.endswith('.pkl'): file = open(self.path, 'rb') self.points = pickle.load(file) else: self.points = point_reader( filename ) # create list of points using point_reader (assume point_reader returns list of points) printer("starting complete") self.build_matrix() # compute n choose 2 different distances printer("ending complete")
def compute_spanner(self): indx = self.selector(self.lower, self.upper, self.epsilon) iter = 0 while (indx[0] != -1): if iter % 100 == 0: printer("Iter: " + str(iter)) iter += 1 i = indx[0] j = indx[1] s = time.time() dist = self.d(self.points[i], self.points[j]) # print("Dist: " + str(time.time() - s)) s = time.time() self.G.add_edge(i, j, weight=dist) # print("Add Edge: " + str(time.time() - s)) s = time.time() self.update_bounds(dist, i, j) # print("Update Bounds: " + str(time.time() - s)) s = time.time() indx = self.selector(self.lower, self.upper, self.epsilon)
def shape_r(path, subdir='/'): points = [] path = path dirs = next(os.walk(path))[1] printer(str(dirs)) for dir in dirs: subpath = path + dir + subdir files = next(os.walk(subpath))[2] printer(str(dir)) for f in files: file_printer("LABEL: {:} FILE: {:}".format(str(dir), str(f)), prio=0) points.append(read_model(subpath + f)) printer_class.PRIORITY = 1 printer("Done loading points") return points
for i, number in enumerate(numbers): if number > numbers[highest_index]: highest_index = i return highest_index # Images are 28x28 pixels. Reshapen, they are 784x1 training = [(mux(label), image.reshape(784) / 255.0) for label, image in mnist.read(path=path, dataset="training")] testing = [(mux(label), image.reshape(784) / 255.0) for label, image in mnist.read(path=path, dataset="testing")] nnet = neuralnetwork.NeuralNetwork([784, 30, 10]) ITR = 30 BTC = 3 p = printer.printer(1) for i in range(ITR): error = 0 for t, x in training: for j in range(BTC): error += nnet.learn(x, t, 1) message = 'Iteration ' + str(i) + ', error ' + str(error) p.overwrite(message) p.clear() success = 0 for t, x in training: y = demux(nnet.evaluate(x)) if y == demux(t): success += 1