【问题标题】:How to check which elements of a tensor A are present also in a tensor B, and create a boolean mask如何检查张量 A 的哪些元素也存在于张量 B 中,并创建一个布尔掩码
【发布时间】:2019-12-26 20:02:53
【问题描述】:

在 tensorflow 2.0 中,我有两个整数张量 (tf.uint8),我们称它们为 A 和 B。 张量 A 的秩是任意的,而 B 是单向的。 我正在寻找的结果是得到一个 bools (tf.bool) 的张量 C,这样:

(例如假设A排名3)

  • C 的形状等于 A 的形状
  • C[i,j,k] 必须为真当且仅当 A[i,j,k] 存在于 B 中

(i,j,k 是这里用来澄清概念的索引)

总结一下,我需要检查 A 的元素是否在 B 中,并创建一个掩码 (C),说明 A 的哪些元素在 B 中,哪些不在。

视觉示例(实际上它不是代码,只是所研究行为的视觉表示):

 A = [[1,2,3],
     [4,5,6]]

 B = [1,5]

 C = [[True, False, False],
     [False, True, False]]

【问题讨论】:

标签: python tensorflow tensor tensorflow2.0


【解决方案1】:

您可以执行以下操作。我找不到以矢量化方式解决此问题的方法,因为您希望它适用于任意大小的 A。但只要 B 不是很长,这应该可以正常工作。

A = tf.constant([[1,2,3],[4,5,6]])

B = tf.constant([1,5])

C = tf.math.greater(tf.reduce_sum(tf.map_fn(lambda b: tf.cast(tf.math.equal(A,b), tf.int32), B), axis=0),0)

【讨论】:

    猜你喜欢
    • 2017-05-18
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 2021-05-21
    • 1970-01-01
    • 2021-05-21
    • 2019-11-05
    • 1970-01-01
    相关资源
    最近更新 更多