При попытке загрузить 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.
Спасибо за вашу помощь!