boolean_mask的意外结果



我使用两个兼容的张量调用tensorflow.boolean_mask,但维度是off的示例:

for m in range(self.class_dim):
labels_m = loop_labels[m]
mask_m = mask[m]
labels_m = tf.boolean_mask(labels_m, mask_m)

两个输入([512])的维度是匹配的,但是一旦我调用boolean_mask,输出是一个包含219个元素的张量,但是维度是[2]。什么会导致这种行为?输出形状应为[219]

对于tf.boolean_mask()函数应该返回的内容存在误解。让我们从文档中提供的一个示例中了解一下它的用法:

import numpy as np
import tensorflow as tf
tensor = np.array(["one", "two", "three", "four"])
mask = np.array([True, False, True, False])
result = tf.boolean_mask(tensor, mask)

结果的值是<tf.Tensor: shape=(2,), dtype=string, numpy=array([b'one', b'three'], dtype=object)>,因为在4元素掩码数组中只有第1和第3个布尔值是True。为了使结果的形状与输入的形状相同,遮罩中的所有值必须为True,以防止被遮罩移除。

相关内容

  • 没有找到相关文章

最新更新