如何在没有for循环的情况下有效计算欧几里得距离矩阵?

用户名

我有一个(51266,20,25,3)(N,F,J,C)矩阵,其中N是示例数,F是帧号,J是关节,C是关节的xyz坐标。我想在每个示例中为每个框架计算欧几里得距离矩阵,以具有尺寸矩阵(51266,20,25,25)我的代码是

from sklearn.metrics.pairwise import euclidean_distances as euc
from tqdm import tqdm
import numpy as np
Examples = np.load('allExamples.npy')
theEuclideanMethod = np.zeros((0,20,25,25))
for example in tqdm(range(Examples.shape[0])):
  euclideanBox = np.zeros((0,25,25))
  for frame in range(20):
    euclideanBox = np.concatenate((euclideanBox,euc(Examples[example,frame,:,:])[np.newaxis,...]),axis=0)

  euclideanBox = euclideanBox[np.newaxis,...]
  theEuclideanMethod = np.concatenate((theEuclideanMethod,euclideanBox))

np.save("Euclidean examples.npy",theEuclideanMethod)
print(theEuclideanMethod.shape,"Euclidean shape")  

问题是我正在使用超级慢的循环。还有什么其他方法可以修改代码以使其运行更快?

用户名

这应该运行得很快。Float32用于保持较低的内存使用率,但它是可选的。调整batch_size为更大可以提高速度,而降低则可以减少内存使用。

import numpy as np

# Adjust batch_size depending on your memory
batch_size = 500

# Make some fake data
x = np.random.randn(51266,20,25,3).astype(np.float32)
y = np.random.randn(51266,20,25,3).astype(np.float32)

# distance_matrix
d = np.empty(x.shape[:-1] + (x.shape[-2],), dtype=np.float32)
# Number of batches
N = (x.shape[0]-1) // batch_size + 1
for i in range(N):
    d[i*batch_size:(i+1)*batch_size] = np.sqrt(np.sum((
        x[i*batch_size:(i+1)*batch_size,:,:,None] - \
        y[i*batch_size:(i+1)*batch_size,:,None,:])**2, axis=-1))

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何有效地计算多个时间序列的欧几里得距离矩阵

来自分类Dev

如何在没有有效计算的情况下返回Eff monad?

来自分类Dev

如何在没有有效计算的情况下返回Eff monad?

来自分类Dev

使用Numpy有效地计算欧几里得距离矩阵

来自分类Dev

使用Numpy有效地计算欧几里得距离矩阵

来自分类Dev

如何在不使用循环的情况下有效地在某些数据集中查找给定项目列表的出现次数?

来自分类Dev

Cookie仅在我的域名前没有www的情况下有效

来自分类Dev

搜索功能仅在某些情况下有效

来自分类Dev

glGetAttribLocation仅在某些情况下有效

来自分类Dev

jQuery Mobile仅在某些情况下有效

来自分类Dev

AVPlayerItemDidPlayToEndTimeNotification仅在强制的情况下有效

来自分类Dev

Switch语句仅在某些情况下有效

来自分类Dev

如何在不分割多行记录的情况下有效地分割大型文本文件?

来自分类Dev

如何在不使用php artisan的情况下有效地创建控制器或模型?

来自分类Dev

如何在没有控制器的情况下创建有效的AuthenticationManager?

来自分类Dev

在TensorFlow中计算张量中所有向量之间的成对欧几里得距离的有效方法

来自分类Dev

IPointerHandler 在某些情况下有效,但在其他情况下无效

来自分类Dev

在没有for循环的情况下,如何在Matlab中将矩阵提升为幂矢量?

来自分类Dev

如何在没有for循环的情况下对矩阵的每一行执行操作?

来自分类Dev

在D中,如何在不使用TaskPool.reduce的情况下有效地在并行foreach中聚合结果?

来自分类Dev

$ scope分配在一种情况下有效,但在另一种情况下有效

来自分类Dev

如何在没有root权限的情况下在空的ubuntu中具有有效的编译器

来自分类Dev

没有双重for循环的两个python矩阵之间的欧几里得距离?

来自分类Dev

在Python中有效检查大量对象的欧几里得距离

来自分类Dev

在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

来自分类Dev

Javascript如何在没有提醒的情况下循环显示十除法计算

来自分类Dev

在Ruby on Rails中,如何在没有元数据的情况下获取请求有效负载

来自分类Dev

如何在没有for循环的情况下对两个矩阵的每一列进行快速矩阵乘法?

来自分类Dev

如何在没有循环的情况下找到给定经度和纬度的两点之间的距离?

Related 相关文章

  1. 1

    如何有效地计算多个时间序列的欧几里得距离矩阵

  2. 2

    如何在没有有效计算的情况下返回Eff monad?

  3. 3

    如何在没有有效计算的情况下返回Eff monad?

  4. 4

    使用Numpy有效地计算欧几里得距离矩阵

  5. 5

    使用Numpy有效地计算欧几里得距离矩阵

  6. 6

    如何在不使用循环的情况下有效地在某些数据集中查找给定项目列表的出现次数?

  7. 7

    Cookie仅在我的域名前没有www的情况下有效

  8. 8

    搜索功能仅在某些情况下有效

  9. 9

    glGetAttribLocation仅在某些情况下有效

  10. 10

    jQuery Mobile仅在某些情况下有效

  11. 11

    AVPlayerItemDidPlayToEndTimeNotification仅在强制的情况下有效

  12. 12

    Switch语句仅在某些情况下有效

  13. 13

    如何在不分割多行记录的情况下有效地分割大型文本文件?

  14. 14

    如何在不使用php artisan的情况下有效地创建控制器或模型?

  15. 15

    如何在没有控制器的情况下创建有效的AuthenticationManager?

  16. 16

    在TensorFlow中计算张量中所有向量之间的成对欧几里得距离的有效方法

  17. 17

    IPointerHandler 在某些情况下有效,但在其他情况下无效

  18. 18

    在没有for循环的情况下,如何在Matlab中将矩阵提升为幂矢量?

  19. 19

    如何在没有for循环的情况下对矩阵的每一行执行操作?

  20. 20

    在D中,如何在不使用TaskPool.reduce的情况下有效地在并行foreach中聚合结果?

  21. 21

    $ scope分配在一种情况下有效,但在另一种情况下有效

  22. 22

    如何在没有root权限的情况下在空的ubuntu中具有有效的编译器

  23. 23

    没有双重for循环的两个python矩阵之间的欧几里得距离?

  24. 24

    在Python中有效检查大量对象的欧几里得距离

  25. 25

    在JavaScript中,如何在没有for循环的情况下计算对象数组中的值差?

  26. 26

    Javascript如何在没有提醒的情况下循环显示十除法计算

  27. 27

    在Ruby on Rails中,如何在没有元数据的情况下获取请求有效负载

  28. 28

    如何在没有for循环的情况下对两个矩阵的每一列进行快速矩阵乘法?

  29. 29

    如何在没有循环的情况下找到给定经度和纬度的两点之间的距离?

热门标签

归档