如何在 TensorFlow 中进行无周期性边界的滚动?

Rom*_*man 5 python tensorflow

我需要对张量进行变换,这与滚动非常相似。不同之处在于我不希望轴末尾的值出现在开头。换句话说,例如,我希望第二个元素位于第 3 个位置,但我不希望最后一个元素成为第一个元素。相反,我希望第一个元素为零。

我已经尝试过这个:

prev_xs = tf.roll(xs, shift = 1, axis = 1)
prev_xs[:,0] = 0.0
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用,因为

prev_xs = tf.roll(xs, shift = 1, axis = 1)
prev_xs[:,0] = 0.0
Run Code Online (Sandbox Code Playgroud)

那么,什么才是正确解决问题的方法呢?

xdu*_*ch0 6

你可以使用

prev_xs = tf.concat((tf.zeros([tf.shape(xs)[0], 1]), xs[:, :1]), axis=1)
Run Code Online (Sandbox Code Playgroud)

一步一步地,我们xs通过像这样的索引丢弃最后一列[:, :1]。我们创建一列具有适当行数的零。然后我们将它连接到 前面xs,将每一列向后推 1。