标量向量矩阵张量之间的区别和联系

Posted 修炼之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标量向量矩阵张量之间的区别和联系相关的知识,希望对你有一定的参考价值。

前言

深度学习的表现之所以能够超过传统的机器学习算法离不开神经网络,然而神经网络最基本的数据结构就是向量矩阵,神经网络的输入是向量,然后通过每个矩阵对向量进行线性变换,再经过激活函数的非线性变换,通过层层计算最终使得损失函数的最小化,完成模型的训练。所以要想学好深度学习,对这些基础的数据结构还是要非常了解。

标量

标量(scalar):一个标量就是一个单独的数(整数或实数),不同于线性代数中研究的其他大部分对象(通常是多个数的数组)。标量通常用斜体的小写字母来表示,例如: x \\mathit x x,标量就相当于Python中定义的

x = 1

向量

向量(vector):一个向量表示一组有序排列的数,通过次序中的索引我们能够找到每个单独的数,向量通常用粗体的小写字母表示,例如: x \\bf x x,向量中的每个元素就是一个标量,向量中的第 i i i个元素用 x i x_i xi表示,向量相当于Python中的一维数组

import numpy as np
#行向量
a = np.array([1,2,3,4])

矩阵

矩阵(matrix):矩阵是一个二维数组,其中的每一个元素由两个索引来决定( A i , j A_{i,j} Ai,j),矩阵通常用加粗斜体的大写字母表示,例如: X \\boldsymbol X X。我们可以将矩阵看做是一个二维的数据表,矩阵的每一行表示一个对象,每一列表示一个特征。在Python中的定义为

import numpy as np
#矩阵
a = np.array([[1,2,3],[4,5,6],[7,8,9]])

张量

张量(tensor):超过二维的数组,一般来说,一个数组中的元素分布在若干维坐标的规则网格中,被称为张量。如果一个张量是三维数组,那么我们就需要三个索引来决定元素的位置( A i , j , k A_{i,j,k} Ai,j,k),张量通常用加粗的大写字母表示,例如: X \\bf X X

import numpy as np
#张量
a = np.array([[[1,2],[3,4]],[[5,6],[7,8]]])

标量向量矩阵张量之间的联系

通过上面的介绍可以总结一下,标量是0维空间中的一个点,向量是一维空间中的一条线,矩阵是二维空间的一个面,三维张量是三维空间中的一个体。也就是说,向量是由标量组成的,矩阵是向量组成的,张量是矩阵组成的。

用一个比较通俗的例子可以概括为:假设你手中拿着一根棍子,标量就是我们只知道棍子的长度,但是不知道棍子指向的方向。向量就是我们除了知道棍子的长度之外还知道棍子指向的是左边还是右边,矩阵就是除了知道向量知道的信息外还知道棍子是朝上还是朝下,张量就是除了知道矩阵知道的信息外还知道棍子是朝前还是朝后。

线性代数常用的运算

一、向量的运算

1.点积

点积(dot product)又被称为数量积(scalar product)或者内积(inner product):是指接受在实数R上的两个向量并返回一个实数值标量的二元运算。

代数意义

两个向量 a ( a 1 , a 2 , … , a n ) a (a_1, a_2,…, a_n) a(a1,a2,,an) b ( b 1 , b 2 , … , b n ) b(b_1, b_2,…, b_n) b(b1,b2,,bn)的点积定义为: a ⋅ b = a 1 b 1 + a 2 b 2 + … … + a n b n a·b=a_1b_1+a_2b_2+……+a_nb_n ab=a1b1+a2b2++anbn,使用矩阵乘法并把(纵列)向量当作n×1 矩阵,点积还可以写为: a ⋅ b = a T ∗ b a·b=a^T * b ab=aTb,这里的 a T a^T aT指示矩阵 a a a的转置。

import numpy as np
a = np.array([1,2,3])
b = np.array([3,2,1])
#向量的点积运算
print(np.dot(a,b))#10
几何意义

除此之外,向量积还有另一种定义 a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∗ ∣ b ⃗ ∣ ∗ c o s θ \\vec a·\\vec b=|\\vec a|*|\\vec b| * cos\\theta a b =a b cosθ,该定义只对二维和三维空间有效, ∣ a ⃗ ∣ |\\vec a| a ∣ b ⃗ ∣ |\\vec b| b 表示向量的长度, θ \\theta θ表示向量之间的夹角。

这个运算可以简单地理解为:在点积运算中,第一个向量投影到第二个向量上(这里,向量的顺序是不重要的,点积运算是可交换的),然后通过除以它们的标量长度来“标准化”。这样,这个分数一定是小于等于1的,可以简单地转化成一个角度值。利用向量积的几何意义,我们可以用来计算两个向量之间的夹角

2.外积

设向量 c ⃗ \\vec c c 由两个向量 a ⃗ \\vec a a b ⃗ \\vec b b 按下列方式定出: c ⃗ \\vec c c 的模 ∣ c ∣ = ∣ a ∣ ∣ b ∣ s i n < a , b > |c|=|a||b|sin<a,b> c=absin<a,b> c ⃗ \\vec c c 的方向垂直于 a ⃗ \\vec a a b ⃗ \\vec b b 所决定的平面(即 c ⃗ \\vec c c 既垂直于 a ⃗ \\vec a a ,又垂直于 b ⃗ \\vec b b ), c ⃗ \\vec c c 的指向按右手规则 a ⃗ \\vec a a 转向 b ⃗ \\vec b b 来确定。

那么,向量 c ⃗ \\vec c c 叫做向量 a ⃗ \\vec a a 深度学习中的数学基础总结

标量向量矩阵和张量

标量向量矩阵和张量

张量(Tensor)标量(scalar)向量(vector)矩阵(matrix)

『PyTorch』第二弹_张量

向量点乘叉乘、矩阵、OpenGL变化