Python 得到给定张量的掩码

Python 得到给定张量的掩码,python,tensorflow,keras,Python,Tensorflow,Keras,我有一个张量,我想得到其中的屏蔽值,从而得到相应的屏蔽 输入: x1=[[0 0 0][0 0 0][1 1][1-1 0][]] x1的输出掩码: mask_1=[[0 0 1]] 我想在Keras的几行中这样做,到目前为止我所做的是: mask_3 = K.cast(tf.equal(x1, 0), 'float32') mask_4 = K.sum(K.ones_like(x1), axis=-1) mask_5 = K.sum(mask_3, axis=-1) mask_

我有一个张量,我想得到其中的屏蔽值,从而得到相应的屏蔽

输入:
x1=[[0 0 0][0 0 0][1 1][1-1 0][]]

x1的输出掩码:
mask_1=[[0 0 1]]

我想在Keras的几行中这样做,到目前为止我所做的是:

mask_3 = K.cast(tf.equal(x1, 0), 'float32')
mask_4 = K.sum(K.ones_like(x1), axis=-1)        
mask_5 = K.sum(mask_3, axis=-1)
mask_6 = mask_5 < mask_4
mask_3=K.cast(tf.equal(x1,0),'float32')
掩码4=K.sum(K.one=x,轴=-1)
掩码_5=K.sum(掩码_3,轴=-1)
遮罩_6=遮罩_5<遮罩_4

有没有更有效的方法?

在这个条件下,您可以得到最后一个维度上的行,它们都是0(并反转它们)

如果您想要数字,请应用强制转换

tf.cast(tf.logical_not(tf.reduce_all(x1 == 0, axis=-1)), 'float32')
# [[0., 0., 1., 1.]]
tf.cast(tf.logical_not(tf.reduce_all(x1 == 0, axis=-1)), 'float32')
# [[0., 0., 1., 1.]]