当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python PyTorch matrix_rank用法及代码示例


本文简要介绍python语言中 torch.linalg.matrix_rank 的用法。

用法:

torch.linalg.matrix_rank(A, tol=None, hermitian=False, *, out=None) → Tensor

参数

  • A(Tensor) -形状为 (*, m, n) 的张量,其中 * 是零个或多个批次维度。

  • tol(float,Tensor,可选的) -公差值。有关 None 时所需的值,请参见上文。默认值:None

  • hermitian(bool,可选的) -指示 A 如果是复数是 Hermitian,如果是实数是对称的。默认值:False

关键字参数

out(Tensor,可选的) -输出张量。如果 None 则忽略。默认值:None

计算矩阵的数值秩。

矩阵秩计算为大于指定 tol 阈值的奇异值(或在 hermitian = True 时为绝对值的特征值)的数量。

支持 float、double、cfloat 和 cdouble dtypes 的输入。还支持批量矩阵,如果 A 是批量矩阵,则输出具有相同的批量维度。

如果 hermitian = TrueA 假设是 Hermitian 如果复数或对称如果实数,但内部不检查。相反,在计算中仅使用矩阵的下三角部分。

如果未指定 tol 并且 A 是维度矩阵 (m, n) ,则公差设置为

其中 是最大奇异值(或 hermitian = True 时的绝对值特征值),而 A 的 dtype 的 epsilon 值(参见 torch.finfo )。如果 A 是一组矩阵,则 tol 以这种方式为批次的每个元素计算。

注意

如果 hermitian = False(默认),则使用奇异值分解 torch.linalg.svd() hermitian = True 时使用特征值分解 torch.linalg.eigvalsh() 计算矩阵秩。当输入在 CUDA 设备上时,此函数将该设备与 CPU 同步。

例子:

>>> A = torch.eye(10)
>>> torch.linalg.matrix_rank(A)
tensor(10)
>>> B = torch.eye(10)
>>> B[0, 0] = 0
>>> torch.linalg.matrix_rank(B)
tensor(9)

>>> A = torch.randn(4, 3, 2)
>>> torch.linalg.matrix_rank(A)
tensor([2, 2, 2, 2])

>>> A = torch.randn(2, 4, 2, 3)
>>> torch.linalg.matrix_rank(A)
tensor([[2, 2, 2, 2],
        [2, 2, 2, 2]])

>>> A = torch.randn(2, 4, 3, 3, dtype=torch.complex64)
>>> torch.linalg.matrix_rank(A)
tensor([[3, 3, 3, 3],
        [3, 3, 3, 3]])
>>> torch.linalg.matrix_rank(A, hermitian=True)
tensor([[3, 3, 3, 3],
        [3, 3, 3, 3]])
>>> torch.linalg.matrix_rank(A, tol=1.0)
tensor([[3, 2, 2, 2],
        [1, 2, 1, 2]])
>>> torch.linalg.matrix_rank(A, tol=1.0, hermitian=True)
tensor([[2, 2, 2, 1],
        [1, 2, 2, 2]])

相关用法


注:本文由纯净天空筛选整理自pytorch.org大神的英文原创作品 torch.linalg.matrix_rank。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。