Published on

PyTorch中rank与ndim的区别

在PyTorch中,rankndim是两个完全不同的概念.

tensor([[0.1183, 0.1972, 0.2399, 0.2899, 0.1328],
        [0.1972, 0.7784, 0.8612, 0.6411, 0.5808],
        [0.2399, 0.8612, 1.1439, 0.8376, 0.6411],
        [0.2899, 0.6411, 0.8376, 0.8076, 0.4530],
        [0.1328, 0.5808, 0.6411, 0.4530, 0.4365]], device='cuda:0')

1. ndim (Number of Dimensions)

  • 含义:表示张量的维度数量(也叫轴的数量)

  • 示例

    x.ndim  # 返回2
    

    这表示x是一个2维张量(矩阵),因为它有行和列两个维度。

  • 等价写法

    len(x.shape)  # 也是2
    

2. rank (矩阵的秩)

  • 含义:在线性代数中,矩阵的秩是指其行或列向量组的最大线性无关组的大小
  • 注意
    • PyTorch张量没有直接的.rank属性
    • 需要使用torch.linalg.matrix_rank()计算
  • 示例
    torch.linalg.matrix_rank(x)  # 返回tensor(3)
    
    这表示5×5矩阵的秩是3(不是满秩矩阵)

关键区别对比表

概念数学意义PyTorch获取方式示例结果
ndim张量的维度数量.ndimlen(x.shape)2
rank矩阵的秩(线性无关性)torch.linalg.matrix_rank()3

THE END