張量不同數軸的平均值計算


轉載:

http://blog.csdn.net/caimouse/article/details/59495858;

一、概述

深度學習里研究的物體的關系,都是比較復雜的。比如一個圖片32X32大小的,它的像素信息就有1024個點,如果考慮RGB三種顏色,就是1024X3了。對於目前還沒有辦法構造140億個神經元的計算機來說,只能干一件事情,就是簡化,化繁為簡。為了簡化,就需要使用算法來進行,在數學上最簡單的處理,就是求平均值。這個道理非常簡單,如果10個數,只要把它們相加,再除以10即可。對於0維數字,可以這樣來計算,如果對於N維的張量,就不是這么簡單的計算了。就拿二維的矩陣來說,它可以橫着算,還可以是豎着算,還可以全部加到一起,再除以總數。可見對於N維的張量來說,有更多的可能,那么就得抽像一個數軸出來。數軸在初中的代數就學習了,可見數軸在高等數學里也會使用到的,N維張量,就是N個數軸的表示,如果沿着不同的數軸進行計算,就會產生不同的作用。其實平均值也可以算是降維思想的一種。

在TF里,就提供了這樣一個算法來計算張量的平均值:

二、tf.reduce_mean(input_tensor,  axis=None,  keep_dims=False,  name=None,  reduction_indices=None)

沿着張量不同的數軸進行計算平均值

三、參數:

input_tensor: 被計算的張量,確保為數字類型。

axis: 方向數軸,如果沒有指明,默認是所有數軸都減小為1。

keep_dims: 如果定義true, 則保留維數,但數量個數為0.

name: 操作過程的名稱。

reduction_indices: 為了舊函數兼容的數軸。

返回值:

降低維數的平均值。

三、實戰

import tensorflow as tf
#創建張量  
x = tf.Variable([[1., 2., 3.], [4., 5., 6.], [7., 8., 9.]]);
#顯示
init = tf.global_variables_initializer();
with tf.Session() as sess:
    sess.run(init);
    #tf.reduce_mean(input_tensor,  axis=None,  keep_dims=False,  name=None,  reduction_indices=None)
    y = tf.reduce_mean(x);
    y01 = tf.reduce_mean(x, axis=0, keep_dims=False);
    y02 = tf.reduce_mean(x, axis=0, keep_dims=True);
    y1 = tf.reduce_mean(x, axis=1);
    
    print("x = ", x.eval());
    print("tf.reduce_mean(x) = ", y.eval());
    print("tf.reduce_mean(x, axis=0, keep_dims=False) = ", y01.eval());
    print("tf.reduce_mean(x, axis=0, keep_dims=True) = ", y02.eval())
    print("tf.reduce_mean(x, axis=1) = ", y1.eval());

執行結果:

('x = ', array([[ 1.,  2.,  3.],
       [ 4.,  5.,  6.],
       [ 7.,  8.,  9.]], dtype=float32))
('tf.reduce_mean(x) = ', 5.0)
('tf.reduce_mean(x, axis=0, keep_dims=False) = ', array([ 4.,  5.,  6.], dtype=float32))
('tf.reduce_mean(x, axis=0, keep_dims=True) = ', array([[ 4.,  5.,  6.]], dtype=float32))
('tf.reduce_mean(x, axis=1) = ', array([ 2.,  5.,  8.], dtype=float32))

總結:

tf.reduce_mean(x)表示計算全局平均值;
tf.reduce_mean(x, axis=0)表示計算y軸平均值;
tf.reduce_mean(x, axis=1)表示計算x軸平均值;
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM