Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import numpy as np
- import cudamat as cm
- def distance(self, X, useGPU=False):
- if useGPU:
- print("using GPU...")
- W=self.W
- gpu_W = cm.CUDAMatrix(W)
- gpu_X = cm.CUDAMatrix(X)
- gpu_D = cm.empty ((W.shape[0] , X.shape[0]) )
- gpu_X2 = cm.empty (X.shape)
- gpu_W2 = cm.empty (W.shape)
- cm.pow(gpu_X, 2, target=gpu_X2)
- gpu_X2 = gpu_X2.sum(axis=1)
- cm.pow(gpu_W, 2, target=gpu_W2)
- gpu_W2 = gpu_W2.sum(axis=1)
- gpu_D = cm.dot(gpu_W, gpu_X.T)
- gpu_D = gpu_D.mult((-2))
- gpu_D = gpu_D.add_col_vec(gpu_W2)
- gpu_D = gpu_D.add_row_vec(gpu_X2.transpose())
- D_T=gpu_D.transpose().asarray()
- return D_T
- else:
- W = self.W
- X2 = (X**2).sum(1)[:, None]
- D = -2*np.dot(W, X.T) + (W**2).sum(1)[:, None] + X2.T
- return D.T
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement