Numpy 具有选定索引的tensorflow遮罩框

Numpy 具有选定索引的tensorflow遮罩框,numpy,tensorflow,Numpy,Tensorflow,假设我有一个秩-2张量a[[1,1,1],[2,2,2],[3,3,3],[4,4,4],…],我有一个选择的索引B(来自tf.equal()或其他地方),例如[1,3,4]。我想让A[I]对B中的任何I都为零,这样A最终会变成类似[1,1,1,1],[0,0,0,0],[3,3,3],[0,0,0],…]的东西。如何做到这一点或这一点是可能的?有多种方法可以做到这一点。下面是一个带有(测试代码)的示例: 将tensorflow导入为tf a=tf.常数([[1,1,1,1],[2,2,2],[

假设我有一个秩-2张量a
[[1,1,1],[2,2,2],[3,3,3],[4,4,4],…]
,我有一个选择的索引B(来自
tf.equal()
或其他地方),例如
[1,3,4]
。我想让A[I]B中的任何I都为零,这样A最终会变成类似
[1,1,1,1],[0,0,0,0],[3,3,3],[0,0,0],…]的东西。如何做到这一点或这一点是可能的?

有多种方法可以做到这一点。下面是一个带有(测试代码)的示例:

将tensorflow导入为tf
a=tf.常数([[1,1,1,1],[2,2,2],[3,3,3],[4,4,4])
b=tf.常数([1,3,4])
one_hot=tf.one_hot(b,a.get_shape()[0]。value,dtype=a.dtype)
掩码=1-tf。减少总和(一个热轴,轴=0)
res=a*掩码[…,无]
使用tf.Session()作为sess:
打印(sess.run(res))
或者这个带有(测试代码):

将tensorflow导入为tf
a=tf.常数([[1,1,1,1],[2,2,2],[3,3,3],[4,4,4])
b=tf.常数([1,3])
mask=1-tf.scatter\u nd(b[…,None],tf.ones\u like(b),shape=[a.get\u shape()[0].value])
res=a*掩码[…,无]
使用tf.Session()作为sess:
打印(sess.run(res))
两者都将输出:

[[1]
[0]
[3]
[0]]

如所愿