二维张量的二范数求解过程
1、在dim=0上求解
代码示例:
import torch score = torch.tensor([[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]]) l2_norm = torch.norm(score, dim=0) print(l2_norm)
输出结果如下:
tensor([1.7321, 3.4641, 5.1962, 6.9282])
解释:在哪一个维度上计算二范数,该维度消失。在(3,4)形状的张量上的第一维度计算时,结果为一个(1,4)形状的张量。计算过程是不管行,每一列的数据算二范数,构成最终结构的对应列的数据
2、在dim=1上求解
代码示例:
import torch score = torch.tensor([[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]]) l2_norm = torch.norm(score, dim=1) print(l2_norm)
输出结果如下:
tensor([5.4772, 5.4772, 5.4772])
解释:在哪一个维度上计算二范数,该维度消失。在(3,4)形状的张量上的第二维度计算时,结果为一个(1,3)形状的张量。计算过程是不管列,每一行的数据算二范数,构成最终结构的对应列的数据
三维张量的二范数求解过程
1、在dim=0上求解
代码示例:
import torch score = torch.tensor([[[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]], [[2.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]]]) l2_norm = torch.norm(score, dim=0) print(l2_norm)
输出结果如下:
tensor([[2.2361, 2.8284, 4.2426, 5.6569], [1.4142, 2.8284, 4.2426, 5.6569], [1.4142, 2.8284, 4.2426, 5.6569]])
解释:示例张量维度为(2,3,4),在dim=0上求解二范数时,在dim=1上,dim=0的两个(3,4)矩阵对应行的对应列序号数据求二范数,进而得到结果张量的对应行的数据
2、在dim=1上求解
代码示例:
import torch score = torch.tensor([[[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]], [[2.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]]]) l2_norm = torch.norm(score, dim=1) print(l2_norm)
输出结果如下:
tensor([[1.7321, 3.4641, 5.1962, 6.9282], [2.4495, 3.4641, 5.1962, 6.9282]])
解释:示例张量维度为(2,3,4),在dim=1上求解二范数时,结果结构为(2,4)。保留了dim=0的结构(2),则在dim=0的两组矩阵中分别计算,在对应的(3,4)矩阵中,每一行对应列的数据求二范数,构成结果的对应矩阵的对应列。
3、在dim=2上求解
代码示例:
import torch score = torch.tensor([[[1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]], [[2.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0], [1.0, 2.0, 3.0, 4.0]]]) l2_norm = torch.norm(score, dim=2) print(l2_norm)
输出结果如下:
tensor([[5.4772, 5.4772, 5.4772], [5.7446, 5.4772, 5.4772]])
解释:示例张量维度为(2,3,4),在dim=2上求解二范数时,结果结构为(2,3)。保留了dim=0的结构(2),则在dim=0的两组矩阵中分别计算,在对应的(3,4)矩阵中,每一行的所有数据求二范数,构成结果的对应矩阵的对应列。
作者:顾饶Leslie
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。