tf.norm、tf.equal和tf.unique


import tensorflow as tf

'''
L2范數  sqrt(∑kXk^2)
無窮范數 abs(max(Xk))
L1范數 sum(abs(Xk))
'''
a = tf.ones([2,2])
print(tf.norm(a)) # tf.norm算的是L2范數

#等價於
print(tf.sqrt(tf.reduce_sum(tf.square(a)))) #這里reduce_sum求和,將一個tensor轉換成了一個標量,當然就是reduce

## 可以通過ord來指定進行多少范數,可以通過axis來指定在哪個維度進行范數
b = tf.norm(a, ord=2, axis=1)#指定為L2范數,在axis=1進行范數
print(b)
c = tf.norm(a, ord=1, axis=0)
print(c)

d = tf.random.normal([5,5])
print(tf.reduce_min(d), tf.reduce_max(d), tf.reduce_mean(d), tf.reduce_sum(d))
# 可以通過axis指定在某一個維度進行相應的操作

# 通過tf.argmax和tf.argmin尋求tensor中的最大值或最小值的索引
t = tf.random.normal([3,5])
print("----------------------")
print(t)
print("----------------------")
a = tf.argmax(t) #當不設置axis的時候默認axis=0
t_axis_1 = tf.argmax(t, axis=1)
print(t_axis_1.shape)
print(a.shape)
print(a)

min_index = tf.argmin(t)


### 比較結果正確的個數
'''
先進行equal,在將結果進行cast成整數,最后使用reduce_sum進行統計
'''
y_0 = tf.constant([1,2,2,2,1])
y_1 = tf.range(5)
res = tf.equal(y_0, y_1)
print("res:", res)
correct_res = tf.reduce_sum(tf.cast(res, dtype=tf.int32))
print("correct:",correct_res)

## task1 求輸出tensor結果與實際結果中正確率

c_t_0 = tf.constant([[0.1,0.2,0.3,0.4],[0.7,0.2,0.05,0.05]], dtype=tf.float32)
result = tf.constant([3,2])
c_t_res = tf.argmax(c_t_0, axis=1)
cp_reslut = tf.equal(tf.cast(c_t_res, dtype=tf.int32), result)
res_num = tf.reduce_sum(tf.cast(cp_reslut,dtype=tf.int32))
print(res_num / len(result))
## task2 理解tf.unique
'''
tf.unique可以將tensor分成值和索引
'''
tt = tf.constant([1,2,2,2,3])
x,y = tf.unique(tt)
print(x)
print(y)


免責聲明!

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



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