Skip to main content
 首页 » 编程设计

python之tensorflow 张量中的唯一非零元素

2024年11月24日31jillzhang

假设我有一个 tensorflow 张量 A,我想知道是否有一个单行代码可以找到 A 中除 0< 之外的所有唯一值 (或者更现实地说,这是一种简短的方法)。 它会更像 pythonic :

import numpy as np 
A = np.array([2,2,2,0,1,3,3]) 
unique = np.unique(A) 
unique = [x for x in unique if x!=0]  
print(unique) 
 
>>> [2,1,3]  

请您参考如下方法:

在 TensorFlow 中,您可以这样做:

import tensorflow as tf 
 
with tf.Graph().as_default(), tf.Session() as sess: 
    data = tf.placeholder(tf.int32, [None]) 
    data_unique, _ = tf.unique(data) 
    data_unique_nonzero = tf.boolean_mask(data_unique, tf.not_equal(data_unique, 0)) 
    print(sess.run(data_unique_nonzero, feed_dict={data: [2,2,2,0,1,3,3]})) 
    # [2, 1, 3] 

作为单线,您可以:

data_unique_nonzero, _ = tf.unique(tf.boolean_mask(data, tf.not_equal(data, 0))) 

虽然原则上效率较低,因为您首先要删除零,然后找到唯一值,而不是相反。