reduce_sum与reduce_mean
reduce_mean(input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None)
reduce_sum为降维求和,reduce_mean为降维求均值,参数都一致。
第二个参数axis: 指定的轴,如果不指定,则计算所有元素的均值;
第三个参数keep_dims:是否保持原来的维度,默认为False
第四个参数name: 操作的名称
第五个参数 reduction_indices:在以前版本中用来指定轴,已弃用;
其中比较难理解的是参数axis, reduction_indices,这两个参数是一个意思。
假设 matrix = [[[1.,2.],[3.,4.]], [[5.,6.],[7.,8.]]] #三维的张量 并且reduction_indices=[1] 或者 axis=[1]
## 针对每个去掉的方括号里面的元素求和。如果三维的,去掉中间的一维,即去掉第1维,那么第一维里面的元素分别是([1.,2.],[3.,4.])与 ([5.,6.],[7.,8.])
## 两组分别求和,为[4,6]与[12,14], 最后再加上最外层的一维方括号[],即为[[4., 6.], [12., 14.]]
## 简单来讲,维度是从外到内,最外层是0,然后就是去掉哪一维度,就先将这一维度的逗号改为加号(仅仅是这一维度,而不是更里面维度的),然后再去掉方括号,计算出结果就是正解
## reduction_indices=[0], [[1.,2.],[3.,4.]]+[[5.,6.],[7.,8.]] = [[ 6. 8.] [10. 12.]]
## reduction_indices=[1], [[1.,2.]+[3.,4.],[5.,6.]+[7.,8.]] = [[ 4. 6.] [12. 14.]]
## reduction_indices=[2], [[1.+2.,3.+4.],[5.+6.,7.+8.]] = [[ 3. 7.] [11. 15.]]
## reduction_indices=None时,去掉所有的方括号[], 最终结果为36
keep_dims比较好理解,默认为False,即为不保持,如果设为True,原来是几维的,结果就补齐原有维度,
而且重点注意的是,在哪层降维,就在哪层加回括号,而不是简单的再最外层加一下而已
## reduce_sum(matrix, keep_dims=True, reduction_indices=None) ###结果为 [[[36]]]
## reduce_sum(matrix, keep_dims=True, reduction_indices=[2]) ###结果为 [[[ 3.] [ 7.]] [[11.] [15.]]]