广播机制
在python中使用numpy进行按位运算的时候,有一个小技巧可以帮助减少代码量——那就是broadcasting(广播机制)。
简单来说,broadcasting可以这样理解:如果你有一个(m,n)的矩阵,让它加减乘除一个(1,n)的矩阵,它会被复制m次,成为一个(m,n)的矩阵,然后再逐元素地进行加减乘除操作。同样地对(m,1)的矩阵成立。
例子
1.输入:
A = numpy.array([1,2,3])
result = A + 100
print(result)
得到结果:
[101 102 103]
2.输入:
A = np.array([[1,2,3],[4,5,6]])
result = A + [100, 200, 300]
print(result)
输出:
[[101 202 303]
[104 205 306]]
3.输入:
a = np.random.randn(3, 3)
b = np.random.randn(3, 1)
c = a * b
print(c.shape)
输出:
b会被复制三次,就会变成(3,3),再使用元素乘法。所以: c.shape = (3, 3)
.
总结
broadcasting机制在深度学习函数构建中应用得很广,比如说我们在逻辑回归函数中,激活函数z = wT * X + b, b是一个数而前面的wT * X是一个1*n的矩阵,由于python这种机制,不需要我们为b构建向量,这就减轻了代码量。