5-多维数组的乘积

1. 多维数组

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

先熟悉几个函数:

  • np.ndim(): 获取数组维数,返回一个 int 数据

  • shape(): 获取数组形状,返回的是一个元组(tuple)

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

>>> A.shape 
(4,) 
>>> A.shape[0] 
4

>>> B = np.array([[1,2], [3,4], [5,6]]) 
>>> print(B) 
[[1 2] 
 [3 4] 
 [5 6]] 
 
>>> np.ndim(B) 
2 
>>> B.shape 
(3, 2)           # 3行2列

二维数组也称为矩阵(matrix)

2. 矩阵乘积

矩阵乘积是线性代数中一个重要知识点,是通过左边矩阵的行(横向)和右边矩阵的列(纵向)以对应元素的方式相乘后再求和而得到的。并且,运算的结果保存为新的多维数组的元素。在python中用 np.dot(A,B) 实现。

>>> 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]])

注意

  • np.dot(A, B)np.dot(B, A)的值可能不一样
  • 矩阵乘法不是 A * B
  • 前一个矩阵的列数 要与 后一个矩阵的行数 保持一致

3. 神经网络内积

下面我们通过矩阵的乘积进行神经网络的运算,这个神经网络省略了偏置和激活函数,只有权重。

在这里插入图片描述

这个神经网络可以看成 3 个矩阵 X = [ x 1 x 2 ] X=\left[ \begin{matrix} x_1&{x_2} \end{matrix} \right ] X=[x1x2] W = [ 1 3 5 2 4 6 ] W=\left[ \begin{matrix} 1&{3}&{5}\\{2}&{4}&{6} \end{matrix} \right ] W=[123456] 以及 Y = [ y 1 y 2 y 3 ] Y=\left[ \begin{matrix} y_1&{y_2}&{y_3} \end{matrix} \right ] Y=[y1y2y3]
下面用python求 矩阵 Y

>>> X = np.array([1, 2])
>>> W = np.array([[1, 3, 5], [2, 4, 6]]) 
>>> Y = np.dot(X, W) 
>>> print(Y) 
[ 5  11  17]

如上所示,使用np.dot()(多维数组的点积),可以一次性计算出Y的结果。 这意味着,即便Y 的元素个数为100或1000,也可以通过一次运算就计算出结果!非常方便。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[小G]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值