Advertisement
Guest User

Untitled

a guest
Jul 7th, 2015
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.85 KB | None | 0 0
  1. import numpy as np
  2. import cudamat as cm
  3.  
  4. def distance(self, X, useGPU=False):
  5. if useGPU:
  6. print("using GPU...")
  7. W=self.W
  8. gpu_W = cm.CUDAMatrix(W)
  9. gpu_X = cm.CUDAMatrix(X)
  10. gpu_D = cm.empty ((W.shape[0] , X.shape[0]) )
  11. gpu_X2 = cm.empty (X.shape)
  12. gpu_W2 = cm.empty (W.shape)
  13.  
  14. cm.pow(gpu_X, 2, target=gpu_X2)
  15. gpu_X2 = gpu_X2.sum(axis=1)
  16. cm.pow(gpu_W, 2, target=gpu_W2)
  17. gpu_W2 = gpu_W2.sum(axis=1)
  18.  
  19. gpu_D = cm.dot(gpu_W, gpu_X.T)
  20. gpu_D = gpu_D.mult((-2))
  21. gpu_D = gpu_D.add_col_vec(gpu_W2)
  22. gpu_D = gpu_D.add_row_vec(gpu_X2.transpose())
  23.  
  24. D_T=gpu_D.transpose().asarray()
  25.  
  26. return D_T
  27. else:
  28. W = self.W
  29. X2 = (X**2).sum(1)[:, None]
  30. D = -2*np.dot(W, X.T) + (W**2).sum(1)[:, None] + X2.T
  31. return D.T
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement