Python tf.image.non_max_抑制给出未初始化张量
我在更快的RCNN网络中使用tensorflow的Python tf.image.non_max_抑制给出未初始化张量,python,tensorflow,non-maximum-suppression,Python,Tensorflow,Non Maximum Suppression,我在更快的RCNN网络中使用tensorflow的tf.image.non_max_suppression。tensorflow图构建成功,并且运行时没有错误,但运行该图时,输出为空张量,取决于输入的维度大小为0(例如,我得到形状为(0,4)的输出张量)。所以我使用了tfdbg工具来查看发生了什么。我发现tf.image.non_max_suppressionop的张量值是Uninitialized tensor。取决于nms op输出的所有后续张量也显示为unnitialized tensor
tf.image.non_max_suppression
。tensorflow图构建成功,并且运行时没有错误,但运行该图时,输出为空张量,取决于输入的维度大小为0(例如,我得到形状为(0,4)的输出张量)。所以我使用了tfdbg
工具来查看发生了什么。我发现tf.image.non_max_suppression
op的张量值是Uninitialized tensor
。取决于nms op输出的所有后续张量也显示为unnitialized tensor
我训练了这个更快的RCNN网络,并使用tf.train.Saver(..).save(..)
保存了权重。当我训练网络时,我使用一个python numpy函数来执行NMS,并使用op wrappertf.py_func
将其插入网络,然后在训练模型后,我决定将python函数更改为tensorflow实现
tf.image.non_max_suppression
没有可学习的参数,因此我不明白为什么现在加载保存的模型并运行图表时,张量未初始化。在使用tf.train.Saver(..).restore(..)加载模型之前,我还尝试执行sess.run(tf.global\u variables\u initializer())
,但没有任何更改,仍然在tfdbg
中看到NMS和后续ops的未初始化张量
对这种行为有什么想法以及如何解决
这就是我如何使用tf.image.non_max_suppression的方法
:
你能包括完整的错误信息,包括任何张量名称吗?我在构建或运行过程中没有收到任何错误。运行时只需获取空张量,其中第一个维度(其大小取决于输入)的大小为0。当我使用tfdbg
进行调试时,我看到nms op是未初始化张量
,以及所有后续张量,具体取决于nms op@mrry的输出
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")