如何获得张量中元素的计数

J.D*_*Doe 7 python tensorflow

我想获得张量中元素的计数,例如,t = [1,2,0,0,0,0](t是张量),我可以得到'0'的数量4通过在python中调用t.count(0),但在tensorflow中,我找不到任何函数来执行此操作.我如何得到'0'的数量?可以请别人帮帮我吗?

Dan*_*ter 10

现在张量流中没有内置计数方法.但您可以使用现有工具在以下方法中执行此操作:

def tf_count(t, val):
    elements_equal_to_value = tf.equal(t, val)
    as_ints = tf.cast(elements_equal_to_value, tf.int32)
    count = tf.reduce_sum(as_ints)
    return count
Run Code Online (Sandbox Code Playgroud)


Sal*_*ali 7

要只计算一个特定的元素,你可以创建一个布尔掩码,将其转换为int并加总:

import tensorflow as tf

X = tf.constant([6, 3, 3, 3, 0, 1, 3, 6, 7])
res = tf.reduce_sum(tf.cast(tf.equal(X, 3), tf.int32))
with tf.Session() as sess:
    print sess.run(res)
Run Code Online (Sandbox Code Playgroud)

您还可以使用tf.unique_with_counts计算列表/张量中的每个元素;

import tensorflow as tf

X = tf.constant([6, 3, 3, 3, 0, 1, 3, 6, 7])
y, idx, cnts = tf.unique_with_counts(X)
with tf.Session() as sess:
    a, _, b = sess.run([y, idx, cnts])
    print a
    print b
Run Code Online (Sandbox Code Playgroud)