我试着用numpy和cudamat做同样的矩阵乘法。在
结果完全不同。在
我做错什么了?在
我用的是:
代码如下:
import numpy as np
import cudamat as cm
cm.init()
...
def distance(self, X):
gpu_W = cm.CUDAMatrix(self.W)
gpu_X = cm.CUDAMatrix(X)
gpu_X2 = cm.pow(gpu_X, 2).sum(axis=1)
gpu_W2 = cm.pow(gpu_W, 2).sum(axis=1)
prodWX = cm.dot(gpu_W, gpu_X.T)
prodWX = prodWX.mult((-2))
W=self.W
prodWXgpu=prodWX.asarray()
prodWXcpu=-2*np.dot(W, X.T)
cm.shutdown()
结果是:
两者都是二维数组。它们的形状是:
W(14,2) X(10000,2)
它意味着每个细胞有两次乘法和一次加法。 所以这不应该是由于累积误差
提前谢谢
我发现了问题:厘米功率正在修改作为参数接收的矩阵。在
为了解决这个问题,我改变了:
签署人:
^{pr2}$相关问题 更多 >
编程相关推荐