gpt4 book ai didi

pytorch - 张量的核范数是什么?

转载 作者:行者123 更新时间:2023-12-04 10:58:18 26 4
gpt4 key购买 nike

当我做

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

它给
tensor(3.4641)

这个值是如何计算的?

最佳答案

核范数,也称为迹范数,是 的总和奇异值 x或等效的以下表达式之一(假设 x 是实数)

u,s,v = torch.svd(x, compute_uv=False)
print(torch.sum(s))
eigs, eigvecs = torch.symeig(x.transpose(1,0) @ x)
print(torch.sum(torch.sqrt(torch.abs(eigs))))

在 pytorch 中 native 不支持查找矩阵平方根(您可以使用 symeig 但这将减少到先前的表达式)。如果你使用类似 this sqrtm implementation 的东西那么你可以使用计算核范数
print(torch.trace(sqrtm(x.transpose(1,0) @ x))

从上面的表达式应该很清楚 if x是正方形和对称的,那么迹范数就是
# use this only if you know x is square and symmetric
print(torch.trace(x))

关于pytorch - 张量的核范数是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59028543/

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