TensorFlow的reduce_sum()函数 TensorFlow的reduce_sum()函数

TensorFlow的reduce_sum()函数

日期:2017.5.20

导师让下周二之前用TensorFlow把MNIST跑通,今天看源码碰到这么一行,发现TensorFlow里面的求和函数和其他语言差别挺大,便记录下来。

import tensorflow as tf

...

# 交叉熵评估代价
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

知乎上看到几个回答,挺浅显易懂的,话不多说,先上图

pic 1

上面是TensorFlow官方文档中的函数解释。

其实在reduce_sum()中,是从维度上去考虑的(感觉这个Matlab中数据的概念比较像)

这里写图片描述

调用reduce_sum(arg1, arg2)时,参数arg1即为要求和的数据,arg2有两个取值分别为0和1,通常用reduction_indices=[0]reduction_indices=[1]来传递参数。从上图可以看出,当arg2 = 0时,是纵向对矩阵求和,原来矩阵有几列就得到几个值;相似地,当arg2 = 1时,是横向对矩阵求和;当省略arg2参数时,默认对矩阵所有元素进行求和。

看到这里,函数名的前缀为什么是reduce_其实也就很容易理解了,reduce就是“对矩阵降维”的含义,下划线后面的部分就是降维的方式,在reduce_sum()中就是按照求和的方式对矩阵降维。那么其他reduce前缀的函数也举一反三了,比如reduce_mean()就是按照某个维度求平均值,等等。

日期:2017.5.20

导师让下周二之前用TensorFlow把MNIST跑通,今天看源码碰到这么一行,发现TensorFlow里面的求和函数和其他语言差别挺大,便记录下来。

import tensorflow as tf

...

# 交叉熵评估代价
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))

...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

知乎上看到几个回答,挺浅显易懂的,话不多说,先上图

pic 1

上面是TensorFlow官方文档中的函数解释。

其实在reduce_sum()中,是从维度上去考虑的(感觉这个Matlab中数据的概念比较像)

这里写图片描述

调用reduce_sum(arg1, arg2)时,参数arg1即为要求和的数据,arg2有两个取值分别为0和1,通常用reduction_indices=[0]reduction_indices=[1]来传递参数。从上图可以看出,当arg2 = 0时,是纵向对矩阵求和,原来矩阵有几列就得到几个值;相似地,当arg2 = 1时,是横向对矩阵求和;当省略arg2参数时,默认对矩阵所有元素进行求和。

看到这里,函数名的前缀为什么是reduce_其实也就很容易理解了,reduce就是“对矩阵降维”的含义,下划线后面的部分就是降维的方式,在reduce_sum()中就是按照求和的方式对矩阵降维。那么其他reduce前缀的函数也举一反三了,比如reduce_mean()就是按照某个维度求平均值,等等。

猜你喜欢

转载自blog.csdn.net/qq_30868235/article/details/80885522