每天五分钟带你解决一个深度学习问题。
向量的内积
在数学中,点积又称数量积或标量积,是一种接受两个等长的数字序列、返回单个数字的代数运算。在欧几里得几何中,两个笛卡尔坐标向量的点积常称为内积,见内积空间。 从代数角度看,先对两个数字序列中的每组对应元素求积,再对所有积求和,结果即为点积。从几何角度看,点积则是两个向量的长度与它们夹角余弦的积。
今天我们结合numpy代码来学习,通过numpy内建的dot函数很容易就能实现向量的内积操作。
import numpy as np
v = np.array([0,1])
u = np.array([1,0])
np.dot(v, u)
输出
0
内积的物理意义
#v_norm为v的模长
v_norm = np.linalg.norm(v)
#u_norm为u的模长
u_norm = np.linalg.norm(u)
v_u_angle = 90
#由于v, u垂直,所以角度为90
#cos_90为cos90度的值
cos_90 = int(np.cos(90 * np.pi / 180))
cos_90
输出
0
v_norm * cos_90
#这个代表v向量在u向量上的投影长度
输出
0.0
为什么是0呢?因为如果有光从v向量的上方照下来,v在u上的投影就是那个黑色的小点啊!
最后我们看一下v的模长与cos90与u的模长相乘的最后结果为0,这与我们用np.dot求出来的结果一致。
v_norm * cos_90 * u_norm
#再乘以u_norm的模长就是v与u的内积,结果和我们直接使用np.dot(v, u)一样
输出
0.0
此时v与u垂直,v就是u的法向量。
重点: 两个向量的内积公式为 所以要牢记:
1 如果两个向量的夹角在90度以内,则内积为正,大于90度则内积为负,正好90度则内积为0。
这个特别重要。
2 因为角度可以代表两个向量的相似度,如果两个向量重合,则角度为0。如果已知两个向量,我们就可以很方便的获取他俩之间的角度:
思考一下:
向量v为(2,2), 向量u为(3,0),他俩之间的角度为45度,你来尝试求一下v在u上的投影长度,也就是黑色箭头的部分。快用numpy来实现一下吧,记得把答案写在评论区!
目录:
人工智能必知必会-前言
人工智能必知必会-标量,向量,矩阵,张量
人工智能必知必会-向量的加减与缩放
人工智能必知必会-向量的内积
人工智能必知必会-向量之间的距离
人工智能必知必会-初识矩阵
人工智能必知必会-矩阵与向量
人工智能必知必会-矩阵的加减法
人工智能必知必会-矩阵乘法
人工智能必知必会-矩阵与方程组
人工智能必知必会-再看矩阵与向量
人工智能必知必会-矩阵与向量乘法的物理意义
人工智能必知必会-词向量(案例)
人工智能必知必会-矩阵相乘上
人工智能必知必会-矩阵相乘下