我想独立移动二维Tensor的列或行,如下所示:
a = tf.constant([[1,2,3], [4,5,6]])
shift = tf.constant([2, -1])
b = shift_fn(a, shift)
它给出:
b = [[0, 0, 1], [5, 6, 0]]
我发现tf.roll()
也可以做类似的事情,但是会 Package 元素。我如何使用它来填充零呢?
我想独立移动二维Tensor的列或行,如下所示:
a = tf.constant([[1,2,3], [4,5,6]])
shift = tf.constant([2, -1])
b = shift_fn(a, shift)
它给出:
b = [[0, 0, 1], [5, 6, 0]]
我发现tf.roll()
也可以做类似的事情,但是会 Package 元素。我如何使用它来填充零呢?
2条答案
按热度按时间4xrmg8kj1#
一个不太好的解决方案是首先使用
tf.pad
填充Tensor,然后在tf.map_fn
中使用tf.roll
独立地移动填充Tensor的每一行(或列)。最后,您可以对结果进行适当的切片。例如:或者,为了帮助保存一些内存,填充和切片都可以在传递给
tf.map_fn
的fn
函数内完成。erhoui1w2#
上面的函数用tf.roll类接口实现了shift *(shift和axis应该是列表而不是Tensor)。
希望这对你有帮助