【发布时间】:2021-11-25 05:29:08
【问题描述】:
在以下维度 (5,1,5,5) 的张量中,我想计算所有值为“真”的 5*5(最内层)布尔矩阵的数量。 例如,
tf.constant([
[[[ True, True, True, True, True],
[False, True, False, True, True],
[False, True, False, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]]],
[[[ True, True, True, True, False],
[False, True, True, True, True],
[False, True, False, True, True],
[ True, True, True, True, True],
[ True, False, True, True, True]]],
[[[ True, True, True, True, True],
[False, True, False, True, True],
[False, True, True, True, True],
[ True, False, True, False, True],
[ True, True, True, True, True]]],
[[[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]]],
[[[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True],
[ True, True, True, True, True]]],
])
在上面的张量中,共有 5 个最里面的矩阵,维度为 5 x 5。其中 3 个矩阵包含“假”和“真”值,而最后 2 个矩阵仅包含“真”值。我需要计算只有“真”值的矩阵总数与同时具有“真”和“假”值的矩阵总数的比率。在这种情况下,它将是: 只有“真”值的矩阵总数/矩阵总数 = 2/5
我如何计算这个? 我能想到的一种方法是使用 tf.squeeze() 删除 1 维,然后将其转换为 numpy 数组,然后循环遍历它。但是,这不是优化的方法。我想使用 tensorflow(使用 tensor 数据类型而不是 numpy 数组)来做到这一点,因为这需要非常省时。
此外,我还想计算所有值为“真”的最内层行总数与总行数的比率。例如,在我们的例子中,它将是: 只有“真”值的总行数/总行数 = 16/25。 这也需要使用张量和高效的时间。
【问题讨论】:
标签: python matrix tensorflow2.0 tensor