Keras后端中的逻辑AND / OR

das*_*ick 5 keras tensorflow

Tensorflow具有tf.logical_and()tf.logical_or()用于比较两个布尔张量,即tf.logical_and(x,y)==TRUEif x==TRUE and y==TRUE (doc)。我在Keras后端找不到类似的东西。它们具有keras.backend.any().all(),但这是用于张量内的聚合,而不是之间的聚合。我一直在使用带有嵌套K.switch()函数的变通办法,但这非常麻烦。

Bar*_*sin 5

xy为相同形状的布尔喀拉斯张量。

要采用元素或,请执行以下操作:

keras.backend.any(keras.backend.stack([x, y], axis=0), axis=0)
Run Code Online (Sandbox Code Playgroud)

要采用元素方式,请执行以下操作:

keras.backend.all(keras.backend.stack([x, y], axis=0), axis=0)
Run Code Online (Sandbox Code Playgroud)

在这里将keras.backend.stack([x, y], axis=0)x和y堆叠到一个新的张量中,该张量的附加维度为0。此后,keras.backend.any采用逻辑或沿新维度,并keras.backend.any采用逻辑and。