1
有誰知道如何提取rank 2張量中每行最大的n個最大值?Tensorflow top張量中的n值
例如,如果我想形狀[2,4]的張量的頂部2的值與值:
[[40,30,20,10],[10,20,30,40 ]]
所需的條件矩陣會是什麼樣子: [真,真,假,假],[假,假,真,真]
一旦有了條件矩陣,我可以使用tf.select選擇實際值。
謝謝你的協助!
有誰知道如何提取rank 2張量中每行最大的n個最大值?Tensorflow top張量中的n值
例如,如果我想形狀[2,4]的張量的頂部2的值與值:
[[40,30,20,10],[10,20,30,40 ]]
所需的條件矩陣會是什麼樣子: [真,真,假,假],[假,假,真,真]
一旦有了條件矩陣,我可以使用tf.select選擇實際值。
謝謝你的協助!
你可以做到這一點使用內置tf.nn.top_k功能:
a = tf.convert_to_tensor([[40, 30, 20, 10], [10, 20, 30, 40]])
b = tf.nn.top_k(a, 2)
print(sess.run(b))
TopKV2(values=array([[40, 30],
[40, 30]], dtype=int32), indices=array([[0, 1],
[3, 2]], dtype=int32))
print(sess.run(b).values))
array([[40, 30],
[40, 30]], dtype=int32)
要得到布爾True/False
值,你可以先得到第k值,然後使用tf.greater_equal
:
kth = tf.reduce_min(b.values)
top2 = tf.greater_equal(a, kth)
print(sess.run(top2))
array([[ True, True, False, False],
[False, False, True, True]], dtype=bool)
謝謝尋求幫助。有沒有一種簡單的方法來使用這些top_k值來獲得True和False值的原始大小的張量? –
是的,請參閱編輯答案。 – sygi
謝謝!你的意思是tf.greater_equal(a,kth)? –