如何删除张量流中的连续重复项?

GEO*_*GUO 1 python unique duplicates tensorflow tensor

例如,输入一维张量:

l_in = [1,1,2,2,3,4,5,5,1,3,5]
Run Code Online (Sandbox Code Playgroud)

我想删除连续的重复项,这意味着输出应该是:

l_out = [1,2,3,4,5,1,3,5]
Run Code Online (Sandbox Code Playgroud)

然而,该tf.unique函数只返回唯一的元素,这表明最后三个元素也将被消除。的输出tf.unique是:

[1,2,3,4,5], [0,0,1,1,2,3,4,4,0,2,4] = tf.unique(l_in)
Run Code Online (Sandbox Code Playgroud)

其中第二项是相应的 ID。

有没有什么方法可以只删除连续的重复项,同时保留非重复和非唯一的元素?

ben*_*che 6

对于一维张量,使用数组旋转/移位:

import tensorflow as tf

l_in = tf.constant([1,1,2,2,3,4,5,5,1,3,5])
l_left_shift = tf.concat((l_in[1:], [0]), axis=0)
mask_left_shift = tf.not_equal(l_in - l_left_shift, 0)
mask = tf.concat(([True], mask_left_shift[:-1]), axis=0)
l_out = tf.boolean_mask(l_in, mask)

with tf.Session() as sess:
    print(sess.run(l_out))
# [1 2 3 4 5 1 3 5]
Run Code Online (Sandbox Code Playgroud)

(即想法是将每个元素与其右邻居相减,然后如果减法结果为 0,则屏蔽掉邻居)