在神经网络算法中,我们经常会用到矩阵运算,也经常会遇到一些问题,比如因为矩阵的维度不同,一个2*3的矩阵就不能跟一个1*2的矩阵做四则运算,但是python的设计哲学讲究易用,所以在python的numpy包中,采用了一种称为广播的设计方法,可以减少使用者花费大量的时间去对数据做各种繁杂的维度变换。下面举几个在神经网络中经常用到的广播技巧:
1、矩阵内运算:
对于一个包含系统信息的m*n矩阵,我们要对其列或行求和,可以使用以下代码:
import numpy as np
A = np.array([[56.0, 0.0, 4.4, 68.0],
[1.2, 104.0, 52.0, 8.0],
[1.8, 135.0, 99.0, 0.9]])
cal = A.sum(axis=0) #axis=0:对列求和;axis=1:对行求和
要计算其中每个元素占总和的比例:
percentage = A/cal.reshape(1,4)
2、矩阵四则运算:
对于不同维度的矩阵做加四则运算,python会自动展开低维矩阵,使其跟高维矩阵同维,然后再做四则运算。
以上就是python中常见的广播技巧,还有很多其他的操作,具体可以查看numpy中关于矩阵部分的描述。