tensorflow:tf.reduce_mean()和tf.reduce_sum()

一,tensorflow中有一类在tensor的某一维度上求值的函数。如:

求最大值tf.reduce_max(input_tensor, reduction_indices=None, keep_dims=False, name=None)

求平均值tf.reduce_mean(input_tensor, reduction_indices=None, keep_dims=False, name=None)

参数1--input_tensor:待求值的tensor。

参数2--reduction_indices:在哪一维上求解。

参数(3)(4)可忽略

举例说明:

 
  1. # 'x' is [[1., 2.]

  2. # [3., 4.]]

x是一个2维数组,分别调用reduce_*函数如下:

首先求平均值:

 
  1. tf.reduce_mean(x) ==> 2.5 #如果不指定第二个参数,那么就在所有的元素中取平均值

  2. tf.reduce_mean(x, 0) ==> [2., 3.] #指定第二个参数为0,则第一维的元素取平均值,即每一列求平均值

  3. tf.reduce_mean(x, 1) ==> [1.5, 3.5] #

指定第二个参数为1,则第二维的元素取平均值,即每一行求平均值

同理,还可用tf.reduce_max()求最大值等。

tensorflow中有很多在维度上的操作,本例以常用的tf.reduce_sum进行说明。官方给的api

 
  1. reduce_sum(

  2. input_tensor,

  3. axis=None,

  4. keep_dims=False,

  5. name=None,

  6. reduction_indices=None

  7. )

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

input_tensor:表示输入 
axis:表示在那个维度进行sum操作。 
keep_dims:表示是否保留原始数据的维度,False相当于执行完后原始数据就会少一个维度。 
reduction_indices:为了跟旧版本的兼容,现在已经不使用了。 
官方的例子:

 
  1. # 'x' is [[1, 1, 1]

  2. # [1, 1, 1]]

  3. tf.reduce_sum(x) ==> 6

  4. tf.reduce_sum(x, 0) ==> [2, 2, 2]

  5. tf.reduce_sum(x, 1) ==> [3, 3]

  6. tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]

  7. tf.reduce_sum(x, [0, 1]) ==> 6

  • 例子:
 
  1. import tensorflow as tf

  2. import numpy as np

  3. x = np.asarray([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])

  4. x_p = tf.placeholder(tf.int32,[2,2,3])

  5. y = tf.reduce_sum(x_p,0) #修改这里

  6. with tf.Session() as sess:

  7. y = sess.run(y,feed_dict={x_p:x})

  8. print y

axis= 0:[[ 8 10 12] [14 16 18]] 
1+7 2+8 3+7 …….. 
axis=1: [[ 5 7 9] [17 19 21]] 
1+4 2+5 3 +6 …. 
axis=2: [[ 6 15] [24 33]] 
1+2+3 4+5+6…..

猜你喜欢

转载自blog.csdn.net/weixin_41036461/article/details/83112347
今日推荐