Tensorflow入門到實戰 拓展(Tensorflow常用函數)

tf.argmax                axis

y_pre = [[5,1,1,0,1],[2,3,-4,5,6]]
​
session.run(tf.arg_max(y_pre,1))
array([0, 4], dtype=int64)

y_pre
session.run(tf.arg_max(y_pre,0))
array([0, 1, 0, 1, 1], dtype=int64)

0是縱軸比較,1是橫向比較

tf.cast

correct = [[ True,False  ,True],[False , True ,True]]
​
session.run(tf.cast(correct,tf.float32))
array([[ 1.,  0.,  1.],
       [ 0.,  1.,  1.]], dtype=float32)

)
session.run(tf.reduce_mean(tf.cast(correct,tf.float32)))
0.66666669

tf.equal()

import tensorflow as tf
import numpy as np
 
A = [[1,3,4,5,6]]
B = [[1,3,4,3,2]]
 
with tf.Session() as sess:
    print(sess.run(tf.equal(A, B)))

truncated_normal

作爲tensorflow裏的正態分佈產生函數,這兩個函數的輸入參數幾乎完全一致,

而其主要的區別在於,tf.truncated_normal的輸出如字面意思是截斷的,而截斷的標準是2倍的stddev。

舉例,當輸入參數mean = 0 , stddev =1時,

使用tf.truncated_normal的輸出是不可能出現[-2,2]以外的點的,

而如果shape夠大的話,tf.random_normal卻會產生2.2或者2.4之類的輸出。
 

 

在計算損失時,通常會用到reduce_sum()函數來進行求和,但是在使用過程中常常會搞不清楚具體是怎樣進行計算的,通過查閱資料,逐漸搞清楚了這個函數的用法,下面就來詳細解釋一下。

在TensorFlow官方文檔中有這樣的解釋: 

其實在reduce_sum()中,是從維度上去考慮的。其中的參數reduction_indices很容易搞蒙圈,上個圖加深理解吧這裏寫圖片描述

 

其實在reduce_sum()中,是從維度上去考慮的。其中的參數reduction_indices很容易搞蒙圈,上個圖加深理解吧。 

這裏寫圖片描述

調用reduce_sum(arg1, arg2)時,參數arg1即爲要求和的數據,arg2有兩個取值分別爲0和1,通常用reduction_indices=[0]或reduction_indices=[1]來給arg2傳遞參數。從上圖可以看出,當arg2 = 0時,是縱向對矩陣求和,原來矩陣有幾列最後就得到幾個值;相似地,當arg2 = 1時,是橫向對矩陣求和,原來矩陣有幾行最後就得到幾個值;當省略arg2參數時,默認對矩陣所有元素進行求和,最後得到一個值。

看到這裏,函數名的前綴爲什麼是reduce_其實也就很容易理解了,reduce就是“對矩陣降維”的含義,下劃線後面的部分就是降維的方式,在reduce_sum()中就是按照求和的方式對矩陣降維。那麼其他reduce前綴的函數也舉一反三了,比如reduce_mean()就是按照某個維度求平均值,等等。

原文:https://blog.csdn.net/chengshuhao1991/article/details/78545723 
 

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