首页 > 解决方案 > 调用 tf.image.non_max_suppression 时获取 ValueError

问题描述

我想使用 tensorflow tf.image.non_max_suppression 函数。

我尝试了以下两个片段:

indices = tf.image.non_max_suppression(
    boxes=anchors_fit, 
    scores=rpn_cls_prob,
    max_output_size=self.max_outputs_num, 
)
indices,scores = tf.image.non_max_suppression_with_scores(
    boxes=anchors_fit, 
    scores=rpn_cls_prob,
    max_output_size=self.max_outputs_num, 
)

在哪里 和anchors_fit.shape[36864,4]rpn_cls_prob.shape[36864]

两个电话都加注:

ValueError: Shape must be rank 0 but is rank 1 for 'non_max_suppression_with_scores/NonMaxSuppressionV5' (op: 'NonMaxSuppressionV5') with input shapes: [36864,4], [36864], [1], [], [], [].

我应该怎么办?

标签: tensorflownms

解决方案


是什么形状的self.max_outputs_num

文档中

max_output_size:一个标量整数张量,表示非最大抑制要选择的最大框数。

在这里,它似乎是一个一维数组,因为错误消息在括号中报告了它。此外,它会匹配错误消息,因为标量的秩为 0,而一维数组的秩为 1。

因此,您可能应该将您self.max_outputs_num的数组从数组转换为标量。


推荐阅读