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