I am doing this numpy computation at the moment which is very, very slow. Something like:
cutoff = self.theta X_flat = X.reshape((X.shape, X.shape * X.shape)) weightfun = lambda x: 1.0 / np.sum(np.dot(X_flat, x) / np.dot(x, x) > 1 - cutoff) # This is a very expensive operation. N_list = np.array(list(map(weightfun, X_flat)))
Assuming I can move everything to pytorch tensors and use the GPU, how could one compute a faster version of this.
Currently it computes the dot product between every column vector and is a N^2 operation and just takes many many hours on my laptop.