Course 1 - 神经网络和深度学习 - 第二周测验

5.看一下下面的这两个随机数组“a”和“b”:

a = np.random.randn(4, 3) # a.shape = (4, 3)
b = np.random.randn(3, 2) # b.shape = (3, 2)
c = a * b

请问数组“c”的维度是多少?

c.shape(4,2) ✖
正解:运算符 “*” 说明了逐元素乘法相乘,而不是矩阵相乘!逐元素乘法需要两个矩阵之间的维数相同,所以这将报错,无法计算。

笔记:numpy 中乘号*的使用
通常不能使用乘号*对两个矩阵作乘法,应该使用dot函数。

  • 两个“同型矩阵”:乘号*运算将对应元素相乘,返回一个同型矩阵。
  • 两个长度相同的“向量”:乘号*运算将对应元素相乘,返回一个同样长度的向量。
  • 一个“向量”,一个“矩阵”:此时,“向量”的长度必须等于“矩阵”列数,乘号*运算将“向量”的每个元素和“矩阵”的对应列相乘后,返回一个和输入矩阵同型的矩阵。“向量”左乘和右乘的结果一样。

9.看一下下面的代码:

a = np.random.randn(3, 3)
b = np.random.randn(3, 1)
c = a * b

请问c的维度会是多少?
答:这将会使用广播机制,b会被复制三次,就会变成(3,3),再使用元素乘法。所以: c.shape = (3, 3).

你可能感兴趣的:(Course 1 - 神经网络和深度学习 - 第二周测验)