上图这个向量场非常有趣,因为它随起点差异而向不同方向移动。原因是,该向量场背后的向量存储着如2x 或x?2; 这样的元素,而不是 -2 和 5这样的标量值。对于图中的每个点,我们将 x 轴的值带入 2x 或 x?2; 中,直播,并绘制一个从开始点指向新位置的箭头。向量场对于机器学习技术的可视化非常有用,如绘制梯度下降(Gradient Descent)的方向。 矩阵 一个矩阵是数字或元素的矩形网格(如Excel表格),有着特别加、减、乘的运算规则。 矩阵维度 我们用m行n列( rows by columns)来描述矩阵的维度. a = np.array([ b = np.array([ 矩阵的标量运算 Matrix scalar operations 矩阵的标量运算与向量相同。只需将标量与矩阵中的每个元素进行加、减、乘、除等操作。 Matrix scalar addition (矩阵的标量相加) a = np.array( 矩阵的元素操作Matrix elementwise operations 为了实现两个矩阵的加、减、除操作,他们必须有着相同的维度。 * 我们对两个矩阵的对应元素值操作,组合生成新的矩阵。 a = np.array([ a + b a — b Numpy 库的 broadcasting 方法* 这个方法不能不提,因为它在实践中被广泛使用。在 numpy中,矩阵的元素操作对矩阵维度的要求,通过一种叫做 broadcasting的机制实现。我们称两个矩阵相容(compatible),如果它们相互对应的维度(行对行,列对列)满足以下条件: 1. 对应的维度均相等, 或 2. 有一个维度的大小是1 a = np.array([ # Same no. of rows # 相同行数,不同列数,但 a 仅有一列,j2直播,所以可行。 # Same no. of columns # 相同列数,不同行数,但 c 仅有一行,所以可行。 # Different no. of columns # 不同列数、不同行数,但 a 和 c 都满足大小为1的规则。 在更高的维度上(3维,4维),情况会变得有点诡异,但现在我们不必担心。理解2维上的操作是一个好的开始。 矩阵的 Hadamard 乘积 Matrix Hadamard product 矩阵的Hadamard 乘积是一个元素运算,就像向量一样。对应位置的值相乘产生新的矩阵。 a = np.array( # Uses python's multiply operator # 使用 python 的乘法运算 在 numpy 中,只要矩阵和向量的维度满足 broadcasting的要求,你便可以对他们使用 Hadamard 乘积运算. 矩阵转置 Matrix transpose 神经网络经常需要处理不同大小的输入矩阵和权值矩阵,它们的维度常常不满足矩阵相乘的规则。矩阵转置提供了一种方法来“旋转”其中的一个矩阵,使其满足乘法操作的要求。转置一个矩阵分两个步骤: 1. 将矩阵顺时针旋转 90° 2. 反转每行元素的顺序(例如,[a b c] 变成 [c b a])。 以将矩阵 M 转置成 T为例: a = np.array([ a.T 矩阵的乘法 Matrix multiplication 矩阵的乘法定义了一系列关于矩阵相乘生成新矩阵的规则。 规则 不是所有的矩阵都可以进行乘法运算。并且,对于输出的结果矩阵也有维度要求。 参考. 1. 第一个矩阵的列数 必须等于第二个矩阵的行数 2.一个 M x N 矩阵和 N x K 矩阵的乘积结果是一个 M x K 矩阵. 新的矩阵取 第一个矩阵的行M 和 第二个矩阵的列K 。 步骤 (责任编辑:本港台直播) |