news 2026/4/15 16:42:16

神经网络(多维数组的运算)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
神经网络(多维数组的运算)

多维数组的运算

如果掌握了NumPy多维数组的运算,就可以高效地实现神经网络。因此,
本节将介绍NumPy多维数组的运算,然后再进行神经网络的实现。

多维数组

简单地讲,多维数组就是“数字的集合”,数字排成一列的集合、排成
长方形的集合、排成三维状或者(更加一般化的)N维状的集合都称为多维数
组。下面我们就用NumPy来生成多维数组,先从前面介绍过的一维数组开始。

>>>importnumpyasnp>>>A=np.array([1,2,3,4])>>>print(A)[1234]>>>np.ndim(A)1>>>A.shape(4,)>>>A.shape[0]4

如上所示,数组的维数可以通过np.dim()函数获得。此外,数组的形状
可以通过实例变量shape获得。在上面的例子中,A是一维数组,由4 个元素
构成。注意,这里的A.shape的结果是个元组(tuple)。这是因为一维数组的
情况下也要返回和多维数组的情况下一致的结果。例如,二维数组时返回的
是元组(4,3),三维数组时返回的是元组(4,3,2),因此一维数组时也同样以
元组的形式返回结果。下面我们来生成一个二维数组。

>>>B=np.array([[1,2],[3,4],[5,6]])>>>print(B)[[12][34][56]]>>>np.ndim(B)2>>>B.shape(3,2)

这里生成了一个3 × 2 的数组B。3 × 2 的数组表示第一个维度有3 个元素,
第二个维度有2 个元素。另外,第一个维度对应第0 维,第二个维度对应第
1 维(Python的索引从0 开始)。二维数组也称为矩阵(matrix)。如图3-10 所示,
数组的横向排列称为行(row),纵向排列称为列(column)

矩阵乘法

下面,我们来介绍矩阵(二维数组)的乘积。比如2 × 2 的矩阵,其乘积
可以像图3-11 这样进行计算(按图中顺序进行计算是规定好了的)。

如本例所示,矩阵的乘积是通过左边矩阵的行(横向)和右边矩阵的列(纵
向)以对应元素的方式相乘后再求和而得到的。并且,运算的结果保存为新
的多维数组的元素。比如,A的第1 行和B的第1 列的乘积结果是新数组的
第1 行第1 列的元素,A的第2 行和B的第1 列的结果是新数组的第2 行第1
列的元素。另外,在本书的数学标记中,矩阵将用黑斜体表示(比如,矩阵
A),以区别于单个元素的标量(比如,a或b)。这个运算在Python中可以用
如下代码实现。

>>>A=np.array([[1,2],[3,4]])>>>A.shape(2,2)>>>B=np.array([[5,6],[7,8]])>>>B.shape(2,2)>>>np.dot(A,B)array([[19,22],[43,50]])

这里,A和B都是2 × 2 的矩阵,它们的乘积可以通过NumPy 的
np.dot()函数计算(乘积也称为点积)。np.dot()接收两个NumPy数组作为参
数,并返回数组的乘积。这里要注意的是,np.dot(A, B) 和np.dot(B, A) 的
值可能不一样。和一般的运算(+或*等)不同,矩阵的乘积运算中,操作数(A、
B)的顺序不同,结果也会不同。

这里介绍的是计算2 × 2 形状的矩阵的乘积的例子,其他形状的矩阵的
乘积也可以用相同的方法来计算。比如,2 × 3的矩阵和3 × 2 的矩阵的乘积
可按如下形式用Python来实现。

>>>A=np.array([[1,2,3],[4,5,6]])>>>A.shape(2,3)>>>B=np.array([[1,2],[3,4],[5,6]])>>>B.shape(3,2)>>>np.dot(A,B)array([[22,28],[49,64]])

2 × 3 的矩阵A和3 × 2 的矩阵B的乘积可按以上方式实现。这里需要
注意的是矩阵的形状(shape)。具体地讲,矩阵A的第1 维的元素个数(列数)
必须和矩阵B的第0 维的元素个数(行数)相等。在上面的例子中,矩阵A
的形状是2 × 3,矩阵B的形状是3 × 2,矩阵A的第1 维的元素个数(3)和
矩阵B的第0 维的元素个数(3)相等。如果这两个值不相等,则无法计算矩
阵的乘积。比如,如果用Python计算2 × 3 的矩阵A和2 × 2 的矩阵C的乘
积,则会输出如下错误。

>>> C = np.array([[1,2], [3,4]]) >>> C.shape (2, 2) >>> A.shape (2, 3) >>> np.dot(A, C) Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: shapes (2,3) and (2,2) not aligned: 3 (dim 1) != 2 (dim 0)

这个错误的意思是,矩阵A的第1 维和矩阵C的第0 维的元素个数不一
致(维度的索引从0 开始)。也就是说,在多维数组的乘积运算中,必须使两
个矩阵中的对应维度的元素个数一致,这一点很重要。我们通过图3-12 再来
确认一下。

图3-12 中,3 × 2 的矩阵A和2 × 4 的矩阵B的乘积运算生成了3 × 4 的
矩阵C。如图所示,矩阵A和矩阵B的对应维度的元素个数必须保持一致。
此外,还有一点很重要,就是运算结果的矩阵C的形状是由矩阵A的行数
和矩阵B的列数构成的。

另外,当A是二维矩阵、B是一维数组时,如图3-13 所示,对应维度
的元素个数要保持一致的原则依然成立。

可按如下方式用Python实现图3-13 的例子。

>>>A=np.array([[1,2],[3,4],[5,6]])>>>A.shape(3,2)>>>B=np.array([7,8])>>>B.shape(2,)>>>np.dot(A,B)array([23,53,83])

神经网络的内积

下面我们使用NumPy矩阵来实现神经网络。这里我们以图3-14 中的简
单神经网络为对象。这个神经网络省略了偏置和激活函数,只有权重。

实现该神经网络时,要注意X、W、Y的形状,特别是X和W的对应
维度的元素个数是否一致,这一点很重要。

>>>X=np.array([1,2])>>>X.shape(2,)>>>W=np.array([[1,3,5],[2,4,6]])>>>print(W)[[135][246]]>>>W.shape(2,3)>>>Y=np.dot(X,W)>>>print(Y)[51117]

如上所示,使用np.dot(多维数组的点积),可以一次性计算出Y 的结果。
这意味着,即便Y 的元素个数为100或1000,也可以通过一次运算就计算出
结果!如果不使用np.dot,就必须单独计算Y 的每一个元素(或者说必须使
用for语句),非常麻烦。因此,通过矩阵的乘积一次性完成计算的技巧,在
实现的层面上可以说是非常重要的。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:56:29

品牌IP形象声音打造:IndexTTS 2.0助力企业建立听觉标识

品牌IP形象声音打造&#xff1a;IndexTTS 2.0助力企业建立听觉标识 在短视频刷屏、虚拟主播带货成常态的今天&#xff0c;你有没有注意过——那些让人“耳朵一亮”的品牌广告&#xff0c;往往不只是画面吸引人&#xff0c;更有一把极具辨识度的声音在背后“种草”&#xff1f;从…

作者头像 李华
网站建设 2026/4/16 12:08:01

Pelco KBD300A 模拟器:TEST02.重构后键盘部分的测试操作一步一步详细指导

TEST02.重构后键盘部分的测试操作一步一步详细指导 在上一篇《重构后键盘部分的测试方案规划》中&#xff0c;我们从宏观角度梳理了测试的整体思路&#xff1a;为什么要测、测什么、覆盖率目标以及测试分类。那篇文章更像是一份蓝图&#xff0c;帮助我们建立测试体系的战略方向…

作者头像 李华
网站建设 2026/4/16 10:17:00

Flutter移动端调用IndexTTS 2.0:跨平台语音生成方案

Flutter移动端调用IndexTTS 2.0&#xff1a;跨平台语音生成方案 在短视频、虚拟主播和有声内容爆发的今天&#xff0c;用户不再满足于“能说话”的机械语音&#xff0c;而是期待更自然、更具表现力的声音表达。一个配音工具是否好用&#xff0c;往往不在于功能多全&#xff0c…

作者头像 李华
网站建设 2026/4/16 10:20:58

R语言随机森林分类精度突破指南(附真实数据集验证结果)

第一章&#xff1a;R语言随机森林分类精度突破指南 随机森林&#xff08;Random Forest&#xff09;作为集成学习中的经典算法&#xff0c;在分类任务中表现出色。其通过构建多个决策树并采用投票机制提升模型鲁棒性与预测精度。然而&#xff0c;原始实现往往受限于参数配置与数…

作者头像 李华
网站建设 2026/4/15 21:07:53

R语言随机森林模型精度提升7步法:数据预处理到超参数调优全流程

第一章&#xff1a;R语言随机森林分类精度提升的核心逻辑在使用R语言构建随机森林模型时&#xff0c;分类精度的提升依赖于对算法内在机制的理解与关键参数的优化。随机森林通过集成多个决策树的结果来降低过拟合风险并提高泛化能力&#xff0c;其核心优势在于引入了双重随机性…

作者头像 李华
网站建设 2026/4/16 11:58:28

Kubernetes集群管理IndexTTS 2.0服务:企业级部署实践

Kubernetes集群管理IndexTTS 2.0服务&#xff1a;企业级部署实践 在AI生成内容&#xff08;AIGC&#xff09;浪潮席卷视频创作、虚拟主播和有声读物的今天&#xff0c;语音合成技术正经历一场从“能说”到“说得像人”的深刻变革。B站开源的 IndexTTS 2.0 模型&#xff0c;凭借…

作者头像 李华