tf.image.non_max_suppression дает неинициализированный тензор
Я использую тензор потока tf.image.non_max_suppression
в сети Faster-RCNN. График тензорного потока строится успешно и также работает без ошибок, но при запуске графа выходные данные являются пустыми тензорами, размер которых зависит от входных данных, имеющих размер 0 (например, я получаю выходные тензоры формы (0,4)). Так что я использовал tfdbg
инструмент, чтобы увидеть, что происходит. Я обнаружил, что значение тензора Uninitialized tensor
для tf.image.non_max_suppression
соч. Все последующие тензоры, в зависимости от выходных данных операции nms, также отображаются как Unintialized tensor
,
Я обучил эту сеть Faster-RCNN и сохранил вес, используя tf.train.Saver(..).save(..)
, Когда я обучал сеть, я использовал функцию NumPy Python для NMS, и она была подключена к сети с помощью оп-оболочки tf.py_func
Затем, после обучения модели, я решил изменить функцию python на реализацию тензорного потока.
tf.image.non_max_suppression
не имеет обучаемых параметров, поэтому я не понимаю, почему, когда я сейчас загружаю сохраненную модель и запускаю график, тензор не инициализируется. Я тоже пытался сделать sess.run(tf.global_variables_initializer())
перед загрузкой модели с tf.train.Saver(..).restore(..)
но нет изменений, все еще видя Uninitialized tensor
в tfdbg
для NMS и последующих операций.
Есть идеи об этом поведении и как его можно решить?
Вот как я использую 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")