【问题标题】:Optimized way to find pairwise cosine distance matrix using pairwise_distances_chunked使用 pairwise_distances_chunked 找到成对余弦距离矩阵的优化方法
【发布时间】:2020-01-14 11:53:17
【问题描述】:

我有一个 42000(行)* 110000(维度)的 numpy 数组,我正在尝试创建一个具有 32GB 内存和 8 个内核的成对距离矩阵(42000*42000)。

我尝试了 pairwise_distances_chunked 但它只给出 3120*42000 距离矩阵。也使用了 pairwise_distances 但它给出了内存不足的错误。

有什么建议可以做吗?

【问题讨论】:

    标签: numpy scikit-learn scipy pairwise-distance


    【解决方案1】:

    阅读 pairwise_distances_chunked 的文档,它一次生成一个块。根据您提出问题的方式,您似乎是这样做的:

    D_chunk = next(pairwise_distances_chunked(X))
    

    该代码(这是文档中的第一个示例)只为您提供了第一个块。

    你想做的是这样的:

    for chunk in pairwise_distances_chunked(X):
        do_something(chunk)
    

    【讨论】:

    • 我也尝试了完全相同的方法,但没有成功,出现错误“无法分配具有形状 (5343, 100352) 和数据类型 float32 的数组”
    • 因为您的内存不足。 pairwise_distances_chunked 制作块以便它们适合您的记忆。如果您在内存中保留超过一个块,您将没有足够的内存。底线是您尝试创建的 pairsewise_distances 矩阵对于内存来说太大了。也许您可以一次保存一个要磁盘的块。
    猜你喜欢
    • 2016-08-23
    • 2010-12-21
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2022-07-19
    • 1970-01-01
    相关资源
    最近更新 更多