pytorch Tensor的核范数是什么?

xxe27gdn  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(289)

当我这样做

import torch
x = torch.ones(3, 4)
x.norm(p='nuc')

它给出了

tensor(3.4641)

该值是如何计算的?

bihw5rsg

bihw5rsg1#

核范数,也称为迹范数,是x奇异值之和,或者等价地是下面的表达式之一(假设x是真实的)
第一个
pytorch本身并不支持求矩阵的平方根(可以使用symeig,但这将简化为前面的表达式)。

print(torch.trace(sqrtm(x.transpose(1,0) @ x))

从上面的表达式中,应该清楚,如果x是半正定的,则迹范数正好是


# use this only if you know x is positive semi-definite

print(torch.trace(x))

相关问题