给定一个 (5,2) 张量,删除第二列中重复的行

Given a (5,2) tensor, delete rows that have duplicates in the second column

所以,假设我有这样的张量:

[[0,18],
[1,19],
[2, 3],
[3,19],
[4, 18]]

我只需要使用 tensorflow 删除第二列中包含重复项的行。最终输出应该是这样的:

[[0,18],
[1,19],
[2, 3]]

你应该可以用 tf.math.unsorted_segment_mintf.gather 解决这个问题:

import tensorflow as tf

x = tf.constant([[0,18],
                 [1,19],
                 [2, 3],
                 [3,19],
                 [4, 18]])


y, idx = tf.unique(x[:, 1])
indices = tf.math.unsorted_segment_min(tf.range(tf.shape(x)[0]), idx, tf.shape(y)[0])
result = tf.gather(x, indices)
print(result)
tf.Tensor(
[[ 0 18]
 [ 1 19]
 [ 2  3]], shape=(3, 2), dtype=int32)

下面是调用 tf.unique 后发生的事情的简单解释: