【问题标题】:Calculate cosine distance between embeddings on Matlab在 Matlab 上计算嵌入之间的余弦距离
【发布时间】:2021-08-11 01:46:54
【问题描述】:

我有几行代码,其中有一个 torch tensor (200.000 x 512),我想计算每个嵌入之间的余弦距离。

现在,我正在做:

similarity = (image_features.cpu() @ image_features.cpu().T).squeeze()

但是时间太长了。也许matlab要快得多。有谁可以告诉我在那里怎么做? (将我的张量转换为 .mat 文件 + 代码)

【问题讨论】:

    标签: python matlab


    【解决方案1】:

    你可以convert your torch tensor into a numpy array, 然后save that to a .mat with scipy's savemat()

    from scipy.io import savemat
    
    # to numpy array
    arr = tensor.numpy()
    # to .mat, needs second input to be a dict type
    savemat("filename.mat", {'a': arr})
    

    但是,MATLAB isn't always faster than Python (Numpy);尤其是在进行矩阵乘法时,因为 Numpy 本身也是高度优化的。所以我相信在 MATLAB 上尝试相同的矩阵乘法不会加快速度。事实上,如果你有 GPU 可用,在 pytorch 中进行计算可能会更快。

    也许这里更相关的问题是how to calculate the cosine similarity of large datasets?

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 1970-01-01
      • 2017-08-03
      • 2014-08-21
      • 2017-09-15
      • 1970-01-01
      • 2020-04-18
      • 2020-02-11
      • 2017-01-13
      相关资源
      最近更新 更多