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)可忽略
舉例說明:
-
# 'x' is [[1., 2.]
-
# [3., 4.]]
x是一個2維陣列,分別呼叫reduce_*函式如下:
首先求平均值:
-
tf.reduce_mean(x) ==> 2.5 #如果不指定第二個引數,那麼就在所有的元素中取平均值
-
tf.reduce_mean(x, 0) ==> [2., 3.] #指定第二個引數為0,則第一維的元素取平均值,即每一列求平均值
-
tf.reduce_mean(x, 1) ==> [1.5, 3.5] #
指定第二個引數為1,則第二維的元素取平均值,即每一行求平均值
同理,還可用tf.reduce_max()求最大值等。
tensorflow中有很多在維度上的操作,本例以常用的tf.reduce_sum進行說明。官方給的api
-
reduce_sum(
-
input_tensor,
-
axis=None,
-
keep_dims=False,
-
name=None,
-
reduction_indices=None
-
)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
input_tensor:表示輸入
axis:表示在那個維度進行sum操作。
keep_dims:表示是否保留原始資料的維度,False相當於執行完後原始資料就會少一個維度。
reduction_indices:為了跟舊版本的相容,現在已經不使用了。
官方的例子:
-
# 'x' is [[1, 1, 1]
-
# [1, 1, 1]]
-
tf.reduce_sum(x) ==> 6
-
tf.reduce_sum(x, 0) ==> [2, 2, 2]
-
tf.reduce_sum(x, 1) ==> [3, 3]
-
tf.reduce_sum(x, 1, keep_dims=True) ==> [[3], [3]]
-
tf.reduce_sum(x, [0, 1]) ==> 6
- 例子:
-
import tensorflow as tf
-
import numpy as np
-
x = np.asarray([[[1,2,3],[4,5,6]],[[7,8,9],[10,11,12]]])
-
x_p = tf.placeholder(tf.int32,[2,2,3])
-
y = tf.reduce_sum(x_p,0) #修改這裡
-
with tf.Session() as sess:
-
y = sess.run(y,feed_dict={x_p:x})
-
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…..