【发布时间】:2021-10-17 16:34:29
【问题描述】:
假设A是一个形状为(m,1)的列向量,B是一个形状为(1,p)的行向量,C是A和B的矩阵乘积,即C=AB,所以C的形状是(m,p)。
现在我想计算 C 的 Frobenius 范数的平方,即 sum_i sum_j c_{ij}^2(C 元素所有平方的总和)
注意c_{ij}=a_i*b_j,a_i和b_j是A和B中的元素,所以我可以重写上面的公式。
sum_i sum_j c_{ij}^2=sum_i sum_j (a_ib_j)^2=sum_i a_i^2 *sum_j b_j^2
公式sum_i sum_j c_{ij}^2的复杂度是O(mp)。
公式 sum_i a_i^2*sum_j b_j^2 的复杂度为 O(m+p),因为 A 和 B 的维数比 C 低。
但是,当 A 和 B 都是矩阵时,这个技巧就失效了。
考虑一下,A是一个形状为(m,n)的矩阵,B是一个形状为(n,p)的矩阵,C是A和B的矩阵乘积,即C=AB,所以C的形状也是(m,p)。
我还想计算这个 sum_i sum_j c_{ij}^2
注意c_{ij}=sum_k a_{ik}*b_{kj},所以
sum_i sum_j c_{ij}^2=sum_i sum_j(sum_k a_{ik}*b_{kj})^2
因此,此时,我无法像以前那样使用任何技巧(矢量版)
所以我的问题是,我需要矩阵 C,还需要 C 的 Frobenius 范数的平方,直接使用 C 会比使用 A 和 B 更快吗?
C 的 Frobenius 范数的平方 = CC^T 的迹
【问题讨论】:
-
嗨!欢迎来到 StackOverflow。这是一个有趣的问题,但 StackOverflow 不会渲染乳胶,所以所有这些美元符号都让你的问题更难阅读,而不是更容易。但也许cs.stackexchange.com 或math.stackexchange.com 会更适合这个问题(而且它们会渲染乳胶)。
-
这可能是一个 math.stackexchange 问题。
-
@Stef 谢谢!我将在这里编辑我的问题并将其重新发布到 math.stackexchange 上。