矩阵和标量、向量相加

矩阵和标量、向量相加

在线性代数中,只有相同维数的矩阵可以相加,相同维数的向量可以相加,而没有定义矩阵与标量、向量的加法。

在深度学习中,我们允许矩阵与标量、向量相加,产生另一个矩阵。

矩阵与标量相加

C = A + b , C i , j = A i , j + b \bold{C} = \bold{A} + b, \quad C_{i,j} = A_{i,j} + b C=A+b,Ci,j=Ai,j+b

即,将标量加到矩阵的每个元素上。

numpy中有如下输入输出:

# [in]
a = np.ones((3, 3))
b = 1
a + b

# [out]
array([[2., 2., 2.],
       [2., 2., 2.],
       [2., 2., 2.]])

矩阵与向量相加

C = A + b \bold{C} = \bold{A} + \bold{b} C=A+b

一般情况下,我们所称的向量为列向量,即
b = [ b 1 ⋮ b n ] \bold{b} = \begin{bmatrix} b_1 \\ \vdots \\ b_n \end{bmatrix} b=b1bn
为了便于排版,一般将其写成 b = [ b 1 , … , b n ] T \bold{b} = [b_1, \dots, b_n]^{T} b=[b1,,bn]T的形式。一般我们称 d = [ d 1 , … , d n ] \bold{d} = [d_1, \dots, d_n] d=[d1,,dn]形式的向量为行向量。矩阵与向量相加时,需要区分是与列向量相加还是与行向量相加。

矩阵与列向量相加
C = A + b , C i , j = A i , j + b i \bold{C} = \bold{A} + \bold{b}, \quad C_{i,j} = A_{i,j} + b_i C=A+b,Ci,j=Ai,j+bi
即,将列向量加到矩阵每一列上。

numpy中有如下输入输出:

# [in]
a = np.ones((3, 3))
b = np.array([1, 2, 3]).reshape(-1, 1)
a + b

# [out]
array([[2., 2., 2.],
       [3., 3., 3.],
       [4., 4., 4.]])

矩阵与行向量相加
C = A + b , C i , j = A i , j + b j \bold{C} = \bold{A} + \bold{b}, \quad C_{i,j} = A_{i,j} + b_j C=A+b,Ci,j=Ai,j+bj
即,将行向量加到矩阵每一行上。

numpy中有如下输入输出:

# [in]
a = np.ones((3, 3))
b = np.array([1, 2, 3]).reshape(1, -1)
a + b

# [out]
array([[2., 3., 4.],
       [2., 3., 4.],
       [2., 3., 4.]])

这种隐式地复制标量或向量到很多位置的方式,被称为广播(broadcasting)

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值