我比较了使用Python的ano(CPU)、theano(GPU)和scikitlearn(CPU)的处理时间。
但是,我得到了奇怪的结果。
看我画的图。在
处理时间比较:
您可以看到scikit learn的结果,它比atano(GPU)更快。
我检查它的运行时间的程序是从一个有n*40个元素的矩阵计算欧几里德距离矩阵。在
这是代码的一部分。在points = T.fmatrix("points")
edm = T.zeros_like(points)
def get_point_to_points_euclidean_distances(point_id):
euclideans = (T.sqrt((T.sqr(points- points[point_id, : ])).sum(axis=1)))
return euclideans
def get_EDM_CPU(points):
EDM = np.zeros((points.shape[0], points.shape[0])).astype(np.float32)
for row in range(points.shape[0]):
EDM[row, :] = np.sqrt(np.sum((points - points[row, :])**2, axis=1))
return EDM
def get_sk(points):
EDM = sk.pairwise_distances(a, metric='l2')<