У меня есть собственный оценщик. Я пытаюсь оптимизировать этот оценщик для вывода (заморозить + оптимизировать).
Вот что я пытался добавить в model_fn()
:
input_tensors = [input_1, input_2, input_3]
output_tensors = [output_1, output_2, output_3, output_4]
tmp_g = tf.get_default_graph().as_graph_def()
from tensorflow.python.tools.optimize_for_inference_lib import optimize_for_inference
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
tmp_g = tf.graph_util.convert_variables_to_constants(sess, tmp_g, [n.name[:-2] for n in output_tensors])
dtypes = [n.dtype for n in input_tensors]
tmp_g = optimize_for_inference(
tmp_g,
[n.name[:-2] for n in input_tensors],
[n.name[:-2] for n in output_tensors],
[dtype.as_datatype_enum for dtype in dtypes],
False)
output_1, output_2, output_3, output_4 = tf.import_graph_def(tmp_g, input_map={n.name[:-2] + ':0': n for n in input_tensors}, return_elements=['output_1', 'output_2', 'output_3', 'output_4 '])
from tensorflow.python.estimator.model_fn import EstimatorSpec
return EstimatorSpec(mode=mode, predictions={
"output_1": output_1[0],
"output_2": output_2[0],
"output_3": output_3[0],
"output_4": output_4[0]
})
Однако, когда вызывается import_graph_def
, я получаю следующую ошибку:
ValueError: Узел 'bert / embeddings / ExpandDims': подключение к неверному
вывод 1 исходного узла IteratorGetNext, который имеет 1 вывод
(Мои входы подключены к модели BERT).
Есть идеи откуда она взялась? И как это исправить?