0

tf.image.non_max_suppression在 Faster-RCNN 网络中使用 tensorflow。张量流图构建成功并且运行也没有错误,但是在运行图时,输出是空张量,其维度取决于输入的大小为 0(例如,我得到形状为 (0,4) 的输出张量)。所以我用tfdbg工具来看看发生了什么。我发现张量值是Uninitialized tensor针对tf.image.non_max_suppression操作的。取决于 nms op 输出的所有后续张量也显示为Unintialized tensor.

我已经训练了这个 Faster-RCNN 网络并使用tf.train.Saver(..).save(..). 当我训练网络时,我使用 python numpy 函数来做 NMS,并使用 op wrapper 将其插入网络tf.py_func,然后在模型训练完成后,我决定将 python 函数更改为 tensorflow 实现。

tf.image.non_max_suppression没有可学习的参数,所以我不明白为什么当我现在加载保存的模型并运行图形时,张量未初始化。我也尝试sess.run(tf.global_variables_initializer())在加载模型之前做,tf.train.Saver(..).restore(..)但没有任何变化,仍然看到Uninitialized tensorNMStfdbg和后续操作。

关于这种行为以及如何解决它的任何想法?

这就是我的使用方式tf.image.non_max_suppression

keep = tf.image.non_max_suppression(proposals_yxyx, 
                             scores, 
                             tf.constant(cfg[cfg_key].RPN_POST_NMS_TOP_N), 
                             cfg[cfg_key].RPN_NMS_THRESH, 
                             name="Non-maximal-suppression")
4

0 回答 0