Pytorch与线性代数运算。
“范数”是数学中的一种基本概念。在泛函分析中,它定义在赋范线性空间中,并满足一定的条件,即:非负性,齐次性,三角不等式。它常常被用来度量某个向量空间(或矩阵)中的每个向量的长度或大小。
向量的范数定义:向量的范数是一个函数 ||x||, 满足非负性 ||x|| >= 0,齐次性 ||cx|| = |c| ||x|| ,三角不等式 ||x+y|| <= ||x|| + ||y||。
范数是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,范数是一个函数,是矢量空间内的所有矢量赋予非零的正长度或大小。半范数可以为非零的矢量赋予零长度。
定义范数的矢量空间是赋范矢量空间,同样,定义半范数的矢量空间就是赋半范矢量空间。
实例:
import torch
a = torch.rand(2, 1)
b = torch.rand(2, 1)
print(a)
print(b)
print("---------------")
#a-b的绝对值求和
print(torch.dist(a, b, p = 1))
#a-b的平方再开根号
print(torch.dist(a, b, p = 2))
#a-b的三次方再开根号
print(torch.dist(a, b, p = 3))
print("---------------")
print(torch.norm(a, p=0))
print(torch.norm(a, p=1))
print(torch.norm(a, p=2))
#范数和
print(torch.norm(a, p='fro'))
运行结果:
tensor([[0.8991],
[0.6836]])
tensor([[0.4861],
[0.0496]])
---------------
tensor(1.0469)
tensor(0.7566)
tensor(0.6877)
---------------
tensor(2.)
tensor(1.5827)
tensor(1.1294)
tensor(1.1294)