网站管理 地址:网站源码下载哪个网站好
2026/5/21 15:04:13 网站建设 项目流程
网站管理 地址:,网站源码下载哪个网站好,wordpress 主题 最简单,godady怎么做网站多维数组的运算 如果掌握了NumPy多维数组的运算#xff0c;就可以高效地实现神经网络。因此#xff0c; 本节将介绍NumPy多维数组的运算#xff0c;然后再进行神经网络的实现。 多维数组 简单地讲#xff0c;多维数组就是“数字的集合”#xff0c;数字排成一列的集合、排…多维数组的运算如果掌握了NumPy多维数组的运算就可以高效地实现神经网络。因此本节将介绍NumPy多维数组的运算然后再进行神经网络的实现。多维数组简单地讲多维数组就是“数字的集合”数字排成一列的集合、排成长方形的集合、排成三维状或者更加一般化的N维状的集合都称为多维数组。下面我们就用NumPy来生成多维数组先从前面介绍过的一维数组开始。importnumpyasnpAnp.array([1,2,3,4])print(A)[1234]np.ndim(A)1A.shape(4,)A.shape[0]4如上所示数组的维数可以通过np.dim()函数获得。此外数组的形状可以通过实例变量shape获得。在上面的例子中A是一维数组由4 个元素构成。注意这里的A.shape的结果是个元组tuple。这是因为一维数组的情况下也要返回和多维数组的情况下一致的结果。例如二维数组时返回的是元组(4,3)三维数组时返回的是元组(4,3,2)因此一维数组时也同样以元组的形式返回结果。下面我们来生成一个二维数组。Bnp.array([[1,2],[3,4],[5,6]])print(B)[[12][34][56]]np.ndim(B)2B.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中可以用如下代码实现。Anp.array([[1,2],[3,4]])A.shape(2,2)Bnp.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来实现。Anp.array([[1,2,3],[4,5,6]])A.shape(2,3)Bnp.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 的例子。Anp.array([[1,2],[3,4],[5,6]])A.shape(3,2)Bnp.array([7,8])B.shape(2,)np.dot(A,B)array([23,53,83])神经网络的内积下面我们使用NumPy矩阵来实现神经网络。这里我们以图3-14 中的简单神经网络为对象。这个神经网络省略了偏置和激活函数只有权重。实现该神经网络时要注意X、W、Y的形状特别是X和W的对应维度的元素个数是否一致这一点很重要。Xnp.array([1,2])X.shape(2,)Wnp.array([[1,3,5],[2,4,6]])print(W)[[135][246]]W.shape(2,3)Ynp.dot(X,W)print(Y)[51117]如上所示使用np.dot多维数组的点积可以一次性计算出Y 的结果。这意味着即便Y 的元素个数为100或1000也可以通过一次运算就计算出结果如果不使用np.dot就必须单独计算Y 的每一个元素或者说必须使用for语句非常麻烦。因此通过矩阵的乘积一次性完成计算的技巧在实现的层面上可以说是非常重要的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询