高维张量指定维度求和总是让人摸不着头脑,接下来我将手把手教大家如何理解指定维度求和。
一、指定一个维度求和
1、二维
咱要记住,0维永远是最外层中括号里的元素,1维度是次外层中括号里的元素。所以在二维张量中指定0维度求和其实是所有行都相加,留下1维度(列);指定1维求和是所有列都相加,留下0维度(行)。
2、三维
咱要记住,0维度永远是最外层中括号里的元素,1维度是次外层中括号里的元素,则2维度是最里层的元素。所以在三维张量中指定0维求和其实是所有二维矩阵都相加,留下1维度和2维度组成的矩阵;指定1维度求和是0维度中每个二维矩阵的行相加,留下0维度和2维度;指定2维度求和是0维度中每个二维矩阵的列相加,留下0维度和1维度。
二、指定多个维度求和
这里拿三维张量举例子,我们指定0维度和1维度求和,则留下2维度,具体是:0维度中所有二维矩阵相加最终得到一个二维矩阵,这个二维矩阵中所有的行(相对原先的三维,1维度是行相加)相加后留下三维度中的2维度。
其他同理,即1维度、2维度求和,则留下0维度数据。
三、与指定维度求和相关的应用
指定维度求和最常见的应用是求均值
1、会改变张量维度的求均值
其实这种做法就是前面所述的做法,拿三维举例,指定0维度求均值,则只留下1维度和2维度,最后三维变成了二维。
2、不改变张量维度的求均值
这种做法的好处是保留了张量的维度,方便使用广播机制做其他运算,而实现也很简单,就是增加参数keepdim=True