Загрузка Squeezenet с ONNX в Tensorflow - невозможно установить заполнитель - PullRequest
0 голосов
/ 26 февраля 2019

При попытке загрузить Squeezenet1.1 в TensorFlow я получаю следующее сообщение об ошибке:

InvalidArgumentError (see above for traceback): You must feed a value for placeholder tensor 'import/data' with dtype float and shape [1,3,224,224] [[node import/data (defined at /Users/fredeli/gitprojects/ai_compendium/test_onnx.py:27) = Placeholder[dtype=DT_FLOAT, shape=[1,3,224,224], _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]

Моя цель - загрузка Squeezenet в виде ONNX-файла (https://github.com/onnx/models/tree/master/models/image_classification/squeezenet) и сначала сохраните его как файл .pb. Для данного файла .pb я использовал следующий код для выполнения одного вывода:

import tensorflow as tf
import os
import numpy as np

from tensorflow.core.framework import graph_pb2

graph_def = graph_pb2.GraphDef()

with open(os.path.join(script_dir, 'squeezenet.pb'), "rb") as f:
    graph_def.ParseFromString(f.read())

test_graph = tf.Graph()

with test_graph.as_default() as graph:
    tf.import_graph_def(graph_def)

    with tf.Session(graph=graph) as sess:
        data = graph.get_tensor_by_name("import/data:0")
        data_op = graph.get_operation_by_name("import/data")
        random_input = np.random.rand(1, 3, 224, 224).astype(np.float)
        sess.run(data_op, feed_dict={data: random_input})

Интересно, что "import / data"Для операции по-прежнему нужен feed_dict, хотя tf.contrib.framework.get_placeholders(graph) четко указывает, что существует только один этот Placeholder, а Tensorboard также показывает, что для этой операции нужен этот единственный Placeholder.

Спасибо за вашу помощь!

...