在计算损失时,通常会用到reduce_sum()函数来进行求和,但是在使用过程中常常会搞不清楚具体是怎样进行计算的,通过查阅资料,逐渐搞清楚了这个函数的用法,下面就来详细解释一下。
在TensorFlow官方文档中有这样的解释:
其实在reduce_sum()中,是从维度上去考虑的。其中的参数reduction_indices很容易搞蒙圈,上个图加深理解吧。
调用reduce_sum(arg1, arg2)时,参数arg1即为要求和的数据,arg2有两个取值分别为0和1,通常用reduction_indices=[0]或reduction_indices=[1]来给arg2传递参数。从上图可以看出,当arg2 = 0时,是纵向对矩阵求和,原来矩阵有几列最后就得到几个值;相似地,当arg2 = 1时,是横向对矩阵求和,原来矩阵有几行最后就得到几个值;当省略arg2参数时,默认对矩阵所有元素进行求和,最后得到一个值。
看到这里,函数名的前缀为什么是reduce_其实也就很容易理解了,reduce就是“对矩阵降维”的含义,下划线后面的部分就是降维的方式,在reduce_sum()中就是按照求和的方式对矩阵降维。那么其他reduce前缀的函数也举一反三了,比如reduce_mean()就是按照某个维度求平均值,等等。