Tensorflow具有tf.logical_and()
和tf.logical_or()
用于比较两个布尔张量,即tf.logical_and(x,y)==TRUE
if x==TRUE and y==TRUE
(doc)。我在Keras后端找不到类似的东西。它们具有keras.backend.any()
和.all()
,但这是用于张量内的聚合,而不是之间的聚合。我一直在使用带有嵌套K.switch()
函数的变通办法,但这非常麻烦。
令x
且y
为相同形状的布尔喀拉斯张量。
要采用元素或,请执行以下操作:
keras.backend.any(keras.backend.stack([x, y], axis=0), axis=0)
要采用元素方式,请执行以下操作:
keras.backend.all(keras.backend.stack([x, y], axis=0), axis=0)
在这里将keras.backend.stack([x, y], axis=0)
x和y堆叠到一个新的张量中,该张量的附加维度为0。此后,keras.backend.any
采用逻辑或沿新维度,并keras.backend.any
采用逻辑and。