上两章总结了numpy库中基本的生成以及索引技术,本章将回顾矩阵运算中非常常用的一种技术——broadcasting技术。
numpy 中的矩阵运算是元素对元素的运算,当矩阵或者张量之间维度不匹配的时候,在两种特定的情况下,维度较低的矩阵会自动产生和维度较高的同型矩阵,参与运算。其中的两个条件是:
1、对应的维度相等
2、其中一个维度为1
如果两个矩阵(张量)的维数不相同而且对应维度不相等且不为1,那么系统会抛出“ValueError:frames are not aligned”的异常。在Broadcasting 技术中,最终输出的结果矩阵(张量)的形状是由各个维度分量的最大值组成。例如:
-----------------------------------------------
input (3d array): shape=256 * 256 * 3 #形状为2562563的3维张量(RGB彩色图像)
input (3d array): shape= 3 #1维标量
output(3d array):shape=256 * 256 * 3 #输出为2562563的3维张量
-----------------------------------------------
input(4d array): shape=8 * 1 * 6 * 1 #输入对应维度上其中一个为1
input(3d array): shape= 7 * 1 * 5
ouput(4d array):shape=8 * 7 * 6 * 5 #输出为各个维度上的最大值