我有一個張量例如:X = [1, 1, 0, 0, 1, 2, 2, 0, 1, 2]
。如何統計張量張量中的元素?
而我想要的是減少張量X
張量如Y = [3, 4, 3]
。
其中位置0處的Y
是X
中有多少個0,以及位置1有多少個1,等等。
我現在正在做的是使用tf.where
函數迭代這個張量。但這看起來並不高雅,而且必須有更好的方法來實現。
謝謝。
我有一個張量例如:X = [1, 1, 0, 0, 1, 2, 2, 0, 1, 2]
。如何統計張量張量中的元素?
而我想要的是減少張量X
張量如Y = [3, 4, 3]
。
其中位置0處的Y
是X
中有多少個0,以及位置1有多少個1,等等。
我現在正在做的是使用tf.where
函數迭代這個張量。但這看起來並不高雅,而且必須有更好的方法來實現。
謝謝。
您正在尋找tf.unique_with_counts
。
import tensorflow as tf
X = tf.constant([1, 1, 0, 0, 1, 2, 2, 0, 1, 2])
op = tf.unique_with_counts(X)
sess = tf.InteractiveSession()
res = sess.run(op)
print(res.count)
# [4 3 3]
要注意的是tf.bincount
只處理正整數。如果輸入張量不是整數類型,或者包含負值,則必須使用tf.unique_with_count
。否則bincount
是好的,並重點。
我認爲你正在尋找Y = tf.bincount(X)
:
X = tf.constant([1, 1, 0, 0, 1, 2, 2, 0, 1, 2])
Y = tf.bincount(X)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
Y.eval()
# output
#[3, 4, 3]
對於負整數,你可以使用:
tf.bincount(X + tf.abs(tf.reduce_min(X)))