Невозможно преобразовать замороженную модель с тензорным потоком в тензор - PullRequest
0 голосов
/ 30 октября 2019

Я работаю над проблемой обнаружения объектов, когда я использовал darknet для получения обученной модели (файлы .cfg и .weights). Чтобы преобразовать его в tenorRT, мне сначала пришлось преобразовать его в тензорный поток, используя этот репо , который генерирует следующие файлы:

  • контрольная точка
  • yolo-obj.ckpt.data-00000-of-00001
  • yolo-obj.ckpt.index
  • yolo-obj.ckpt.meta
  • yolo-obj.pb

затем я использовал следующий код, чтобы преобразовать его в tenorRT

from tensorflow.python.compiler.tensorrt 
import trt_convert as trt
import tensorflow as tf


with tf.Session() as sess:
    # convert into frozen graph
    saver = tf.train.import_meta_graph('data/yolo-obj.ckpt.meta')
    saver.restore(sess, 'data/yolo-obj.ckpt')

    output_nodes = ["save/restore_all"]

    frozen_graph = tf.graph_util.convert_variables_to_constants(
                   sess,
                   tf.get_default_graph().as_graph_def(),
                   output_node_names=output_nodes)

    # convert into trt
    converter = trt.TrtGraphConverter(
                 input_graph_def=frozen_graph,
                 nodes_blacklist=output_nodes)
    trt_graph = converter.convert()
    output_node = tf.import_graph_def(
                 trt_graph,
                 return_elements=output_nodes)

    sess.run(output_node)

, но я получаю ошибку:

ValueError: вход 0 для узла save / Assign был передан float от yolov3/ convolutional1 / BatchNorm / beta: 0 несовместимо с ожидаемым float_ref.

...