【神经网络】矩阵乘法的应用详解

文章目录

一、多维数组

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

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

  • 创建一维数组

    python 复制代码
    import numpy as np
    A = np.array([1, 2, 3, 4])
    print(A)  # [1 2 3 4]
  • 查询数组维度

    python 复制代码
    np.ndim(A)

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

  • 查询数组形状

    python 复制代码
    A.shape

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

  • 创建二维数组

    python 复制代码
    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 A A 和右矩阵 B B B。计算结果是一个新的矩阵 C C C,其中的每个元素是通过 A A A 的行与 B B B 的列对应元素相乘后求和得到的。具体的计算方法可以表示为:
C i j = ∑ k ( A i k × B k j ) Cij = \sum_{k} (Aik \times Bkj) Cij=k∑(Aik×Bkj)

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

计算 2x2 矩阵的乘积

考虑两个 2x2 的矩阵 A A A 和 B B B:
A = 1 2 3 4 , B = 5 6 7 8 A = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad B = \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} A=1324,B=5768

使用 NumPy 库的 np.dot() 函数,我们可以得到矩阵 C C C:
C = 19 22 43 50 C = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix} C=19432250

这里,元素 C 0 0 C00 C00 的计算方式是:
C 0 0 = 1 × 5 + 2 × 7 = 19 C00 = 1 \times 5 + 2 \times 7 = 19 C00=1×5+2×7=19

矩阵形状的要求

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

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

当我们将矩阵与向量相乘时,同样遵循维度匹配的规则。

下面是个例子

python 复制代码
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 A A 和 B B B 的点积,结果是一个长度为 3 的向量 C C C。

C = 23 53 83 C = \begin{bmatrix} 23 \\ 53 \\ 83 \end{bmatrix} C= 235383

三、神经网络中的矩阵乘法

神经网络的结构简介

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

这个网络的结构可以通过以下的矩阵 X X X(输入)和 W W W(权重)来表示:
X = 1 2 , W = 1 3 5 2 4 6 X = \begin{bmatrix} 1 \\ 2 \end{bmatrix}, \quad W = \begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix} X=12,W=123456

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

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

在神经网络中,下一层的输出 Y Y Y 可以通过当前层的输入 X X X 和权重 W W W 的矩阵乘积来计算:
Y = X T W = 1 2 1 3 5 2 4 6 = 5 11 17 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} Y=XTW=12123456=51117

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

计算细节和NumPy的实现

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

python 复制代码
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]

相关推荐
STLearner4 小时前
ICML 2026 | 时间序列(Time Series)论文总结(3)【因果,可解释性,不规则时序,表示学习,benchmar
大数据·论文阅读·人工智能·深度学习·神经网络·机器学习
风华圆舞4 小时前
鸿蒙HarmonyOS矩阵加载动效实战 —— 从「假旋转」到可复用的波前反馈组件
华为·矩阵·harmonyos·arkui·gradientspin·波前动效·oklab
码云骑士5 小时前
61-LangChain-vs-LlamaIndex-选型对比-功能矩阵-混用实践
python·线性代数·矩阵·langchain
邓码农0076 小时前
多团队多级合规审批体系测评:5 款矩阵工具适配 MCN / 连锁企业 / 代运营合规需求对比
矩阵·新媒体运营
USB_ABC1 天前
南京军区训练基地:混合矩阵赋能军事训练智慧化协同升级
矩阵·音视频
USB_ABC1 天前
郑州建业地产:高清音视频矩阵构筑智慧社区全域物联管控体系
矩阵·音视频
USB_ABC1 天前
济南航天五院:高清数字矩阵赋能卫星研发数据可视化精准管控
矩阵·音视频
学究天人1 天前
数学公理体系大全:第四章 ZFC公理的形式化与构造演算
线性代数·数学建模·矩阵·动态规划·图论·抽象代数·拓扑学
空中湖2 天前
AI科普|从图灵测试到神经网络:AI七十年黎明史
人工智能·深度学习·神经网络
AI科技星2 天前
特征值与特征向量不是矩阵特殊解,是变换矩阵下不改变生长方向、仅缩放体量的固有主螺旋脉络 -《全域数学vs传统数学:人类文明进阶200讲》第73讲
人工智能·线性代数·矩阵·数据挖掘·回归·乖乖数学·全域数学