如何根据条件修改二维张量列的值 - Tensorflow?

How to modify values of a column of a 2D tensor based on condition - Tensorflow?

我有一个二维张量,如果值 > 0,它的最后一列的值为 0,否则为 1。它的行为应该类似于以下 numpy 代码块:

x = np.random.rand(8, 4)
x[:, -1] = np.where(x[:, -1] > 0, 0, 1)

有没有办法在 Tensorflow 中实现二维张量的相同行为?

这可能不是最优雅的解决方案,但它有效:

x=tf.ones((5,10))

rows=tf.stack(tf.range(tf.shape(x)[0]))
column=tf.ones_like(rows)*tf.shape(x)[1]-1
idx=tf.stack((rows,column),axis=1)
x_new=tf.tensor_scatter_nd_update(x, idx, tf.where(x[:, -1] > 0, 0., 1.))

print(x_new)

结果是这样的(原来的 x 是 tf.ones):

[[1. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 0.]
 [1. 1. 1. 1. 1. 1. 1. 1. 1. 0.]]