前言
在这一小节中,作者主要讲解了线性代数中标量、向量、矩阵和张量的概念。
因为本身就学过线性代数,所以对这些基础知识自然是了解的。但是比较没听过的就是张量和范数的概念,因此可以在这里记录一下。
张量
在本书定义中,一个数值即代表一个标量,如1、3、4、5、温度、价格等。
向量即可以当作由多个分量值组成的列表。一个向量列表形成时,就带有一定的现实意义。如一个用户的身份信息向量就可以由身高、体重、年龄、学历、年收入水平标量值来形成
那么张量就是python中用来处理向量的方式。
x = torch.arange(4, dtype=torch.float32)
就是创建了一个四维的向量,而x就是张量。向量就是张量,但张量不一定就是向量,因为张量可以有多个轴。而向量就只有一个轴。如
y = torch.tensor([[1, 2, 3], [2, 0, 4], [3, 4, 5]])
这个张量就是一个三维的矩阵,是具有三条轴的张量
范数
根据定义:向量范数是将向量映射成标量的函数f。(虽然我没太懂意义在哪,可能后续会在实践中感悟到)
此书还列举了几个例子:
1.L2范数
若有一个n维元素的列向量(x1,x2,x3,…,xn)那么此向量的L2范数就是所有元素平方和的平方根。
x = torch.arange(4, dtype=torch.float32)
torch.norm(x)
2.L1范数
表示向量元素的绝对值之和
torch.abs(x).sum()
2.矩阵的Frobenius范数
矩阵的Frobenius范数是矩阵所有元素的平方和的平方根
torch.norm(torch.ones(4, 9))