当我这样做
import torch x = torch.ones(3, 4) x.norm(p='nuc')
它给出了
tensor(3.4641)
该值是如何计算的?
bihw5rsg1#
核范数,也称为迹范数,是x的奇异值之和,或者等价地是下面的表达式之一(假设x是真实的)第一个pytorch本身并不支持求矩阵的平方根(可以使用symeig,但这将简化为前面的表达式)。
x
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))
1条答案
按热度按时间bihw5rsg1#
核范数,也称为迹范数,是
x
的奇异值之和,或者等价地是下面的表达式之一(假设x是真实的)第一个
pytorch本身并不支持求矩阵的平方根(可以使用
symeig
,但这将简化为前面的表达式)。从上面的表达式中,应该清楚,如果
x
是半正定的,则迹范数正好是