gpt4 book ai didi

python - 将矩阵乘以常量内存中的转置

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:45:15 26 4
gpt4 key购买 nike

我有一个 MxN 矩阵 X,其中 M 是可管理的,但 N 非常大。矩阵是术语文档语料库格式的维基百科,为您提供一些上下文。我需要计算:

X.dot(X.T)

我知道结果(维度 MxM)将适合内存,但矩阵 X 不会。

我如何最好地计算乘积,明智地迭代 X 列?我将语料库保存为文件,并且能够逐个遍历每个文档(即 X 列)。有没有办法迭代构建 X * X.T?

我碰巧为此使用了 Numpy,但实际上任何对算法的描述都会很棒。

最佳答案

可以使用矩阵积的定义:

Y = np.zeros((M, M), dtype=float)
for j in xrange(N):
Y += X[:,np.newaxis,j] * X.T[j,np.newaxis,:]

使用更大的 block 可以提高性能:

block_size = 256
Y = np.zeros((M, M), dtype=float)
for j in xrange(0, N, block_size):
Xb = X[:,j:(j+block_size)]
Y += Xb.dot(Xb.T)

编辑:忘记了第一个示例中的 np.newaxis

关于python - 将矩阵乘以常量内存中的转置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26480076/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com