问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

矩阵乘法在神经网络中的应用详解

创作时间:
作者:
@小白创作中心

矩阵乘法在神经网络中的应用详解

引用
CSDN
1.
https://blog.csdn.net/lph159/article/details/138656469

多维数组

多维数组,简单来说,就是数字的集合,这些数字可以排成一列(一维数组)、一个矩阵(二维数组)、或更高维度的结构。

使用NumPy创建和操作多维数组

创建一维数组

import numpy as np
A = np.array([1, 2, 3, 4])
print(A)  # [1 2 3 4]

查询数组维度

np.ndim(A)

输出表示数组的维度,对于A来说输出为1,表示这是一个一维数组。

查询数组形状

A.shape

输出为一个元组 (4,),表示数组有4个元素。shape 属性返回一个元组,表示数组在每个维度上的大小。

创建二维数组

B = np.array([[1, 2], [3, 4], [5, 6]])
print(B)
# [[1 2]
#  [3 4]
#  [5 6]]
np.ndim(B)  # 对于二维数组B,输出为2,表示这是一个二维数组。
B.shape  # 输出为 (3, 2),表示这个数组有3行2列。

矩阵乘法

矩阵乘法的基本定义

矩阵乘法涉及两个矩阵:左矩阵A AA和右矩阵B BB。计算结果是一个新的矩阵C CC,其中的每个元素是通过A AA的行与B BB的列对应元素相乘后求和得到的。具体的计算方法可以表示为:

[C[i][j] = \sum_{k} (A[i][k] \times B[k][j])]

其中,i ii表示行索引,j jj表示列索引,k kk表示求和的索引。

计算 2x2 矩阵的乘积

考虑两个 2x2 的矩阵A AA和B BB:

[A = \begin{bmatrix} 1 & 2 \ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \ 7 & 8 \end{bmatrix}]

使用 NumPy 库的 np.dot() 函数,我们可以得到矩阵C CC:

[C = \begin{bmatrix} 19 & 22 \ 43 & 50 \end{bmatrix}]

这里,元素C [ 0 ] [ 0 ] C[0][0]C[0][0]的计算方式是:

[C[0][0] = 1 \times 5 + 2 \times 7 = 19]

矩阵形状的要求

要实现矩阵乘法,矩阵A AA的列数必须与矩阵B BB的行数相等。如果这两个矩阵的维度不匹配,将导致计算错误。此外,还有一点很重要,就是运算结果的矩阵C CC的形状是由矩阵A AA的行数 和矩阵B BB的列数构成的。

特殊情况:矩阵与向量的乘积

当我们将矩阵与向量相乘时,同样遵循维度匹配的规则。下面是个例子:

import numpy as np
# 定义矩阵 A
A = np.array([[1, 2], [3, 4], [5, 6]])
# 定义向量 B
B = np.array([7, 8])
# 计算矩阵 A 和向量 B 的乘积
C = np.dot(A, B)
# 打印结果向量 C
print(C)

在这段代码中:

  • A 是一个 3x2 的矩阵。
  • B 是一个长度为 2 的向量。
  • 使用 np.dot() 函数计算A AA和B BB的点积,结果是一个长度为 3 的向量C CC。

[C = \begin{bmatrix} 23 \ 53 \ 83 \end{bmatrix}]

神经网络中的矩阵乘法

神经网络的结构简介

考虑一个简单的神经网络,它包括两个输入节点和三个输出节点,如图所示

这个网络的结构可以通过以下的矩阵X XX(输入)和W WW(权重)来表示:

[X = \begin{bmatrix} 1 \ 2 \end{bmatrix}, \quad W = \begin{bmatrix} 1 & 3 & 5 \ 2 & 4 & 6 \end{bmatrix}]

这里,X XX是一个 2x1 的列向量,代表输入层的节点,而W WW是一个 2x3 的矩阵,代表从每个输入节点到输出节点的权重。

矩阵乘法在神经网络中的应用

在神经网络中,下一层的输出Y YY可以通过当前层的输入X XX和权重W WW的矩阵乘积来计算:

[Y = X^T W = \begin{bmatrix} 1 & 2 \end{bmatrix} \begin{bmatrix} 1 & 3 & 5 \ 2 & 4 & 6 \end{bmatrix} = \begin{bmatrix} 5 & 11 & 17 \end{bmatrix}]

这里,X T X^TXT表示X XX的转置,使得其维度与W WW相匹配,从而可以执行矩阵乘法。

计算细节和NumPy的实现

使用 NumPy 库可以简洁地实现这种类型的矩阵乘法。

import numpy as np
# 定义输入向量 X
X = np.array([1, 2])
# 定义权重矩阵 W
W = np.array([[1, 3, 5], [2, 4, 6]])
# 计算输出向量 Y
Y = np.dot(X, W)
print(Y)  # 输出: [5 11 17]
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号