我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 tensor
NMStfdbg
和后续操作。
关于这种行为以及如何解决它的任何想法?
这就是我的使用方式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")