tf.reduce_sum()函數

reduce_sum(
    input_tensor,
    axis=None,
    keep_dims=False,
    name=None,
    reduction_indices=None
)

reduce_sum 是 tensor 內部求和的工具。其參數中:

  1. input_tensor 是要求和的 tensor

  2. axis 是要求和的 rank,如果爲 none,則表示所有 rank 都要仇和

  3. keep_dims 求和後是否要降維

  4. 這個操作的名稱,可能在 graph 中 用

  5. 已被淘汰的,被參數 axis 替代

x = tf.constant([[1, 1, 1], [1, 1, 1]])
tf.reduce_sum(x, 0)  # 對 tensor 的 0 級進行求和,[1,1,1] + [1,1,1] =  [2, 2, 2]
tf.reduce_sum(x, 1)  # 對 tensor 的 1 級進行仇和,[1+1+1, 1+1+1] = [3, 3]
tf.reduce_sum(x, 1, keep_dims=True)  # 對第 1 級進行求和,但不降維, [[3], [3]]
tf.reduce_sum(x, [0, 1])  # 0 級和 1級都要求和,6
tf.reduce_sum(x)  # 因爲 x 只有 2 級,所以結果同上一個,6

上面是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()就是按照某個維度求平均值,等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章