通过官方示例学习宠物跟随(点乘与叉乘)

面试中或多或少都避免不了问向量的点乘和叉乘

有时也会让你举个例子在项目中如何运用!

不管你有没有被问到,反正我被问到了。

今天就稍稍总结一下,并拿出Unity商城中的宠物跟随的例子分析一下。

1.向量点积(内积)

A和B的点积:

A*B=|A||B|cosθ (θ为向量A和B的夹角)
A*B = a1b1+a2b2

几何意义

点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影。

  • 点积的结果是一个数,又名数量积
  • A*B=B*A
    (如图)

2.向量叉积(外积)

则A和B的叉积:

    AxB=a1b2-a2b1
    AxB=|A||B|sinθ (θ为向量A和B的夹角)

几何意义

在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面。

在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。

(叉乘结果是一个向量, A x B= -B x A)

如下图所示:

### 深度学习中的概念及其应用 #### (内积) 在深度学习中,向量之间的运算用于衡量两个向量间的相似程度。具体来说,对于长度相同的两个向量 \( \mathbf{a}=[a_1, a_2,...,a_n] \) 和 \( \mathbf{b}=[b_1,b_2,...,b_n] \),它们的定义如下: \[ \text{dot product } (\mathbf{a},\mathbf{b})=\sum_{i=1}^{n}{(a_i*b_i)} \] 这种操作常见于神经网络层间的数据传递过程之中,比如全连接层权重矩阵W输入特征向量X相得到输出Y=W·X。 ```python import numpy as np vector_a = np.array([1, 2]) vector_b = np.array([3, 4]) result_dot_product = np.dot(vector_a, vector_b) print(f"The dot product of {vector_a} and {vector_b} is {result_dot_product}") ``` 此代码展示了如何利用NumPy库来实现简单的二维向量之间计算[^1]。 #### (外积/矢量积) 相比之下,仅适用于三维空间内的两组坐标表示法下的向量\( (x,y,z)\),其结果会形成一个新的垂直于此平面方向上的第三个向量c=(cx,cy,cz): \[ c_x=a_y * b_z-a_z * b_y \\ c_y=a_z * b_x-a_x * b_z\\ c_z=a_x * b_y-b_x*a_y \] 值得注意的是,在高维数据处理场景下我们通常不会直接涉及到真正的几何意义上的“”,但在某些特定领域如计算机视觉里可能会遇到类似的变换形式;另外一些情况下也会采用广义化的张量积作为替代方案之一。 ```python from numpy import cross vector_c = cross(vector_a, vector_b) print(f"The cross product of {vector_a} and {vector_b} results in the new perpendicular vector {vector_c}.") ``` 上述例子说明了通过Python内置函数完成基本的三维度数组交法运算。 #### 主要区别 - **适用范围**: 可用于任意维度的空间,而标准意义下的则限定于三维环境; - **物理含义**: 前者反映的是两者共线性强度或者说投影关系,后者给出了一条新轴代表原有两条边构成平行四边形面积大小及方位指向; - **应用场景**: 在机器学习算法设计过程中更多关注前者所体现出来的关联特性分析价值,至于后者除非涉及特殊图形学任务否则较少触及到该层面的操作逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值