tf.saved_model действует иначе при запуске в конечной точке - PullRequest
0 голосов
/ 16 марта 2019

Я получаю странные ошибки при вызове моей модели через Tensorflow Serve.

Я создал tf.saved_model с SavedModelBuilder из другой модели тензорного потока.

Я просто изменил несколько вещей, чтобы учесть входные данные переменного размера (его сборка из ONNX на первом месте, поэтому мне нужно изменить несколько вещей на графике), и добавил в полеpretion_signature входные и выходные данные.

Когда я вызываю конечную точку:

test_input1 = np.random.rand(1, 5, 300)
test_input2 = np.arange(13)

data = json.dumps({'signature_name': 'out', 
                   'instances': [{'x:0': test_input1.tolist(),
                                  '1:0': test_input2.tolist()}]})

headers = {"content-type": "application/json"}

r = requests.post(endpoint_url, data=data, headers=headers)

Я получаю странные ошибки, которые даже непоследовательны, ошибки в операции заполнения и операции транспонирования, такие как:

"error": "transpose ожидает вектор размера 5. Но input (1) - это вектор размера 4 \ n \ t [[{{node transpose_1}}]]"

Я могу получать разные ошибки, вызывая один и тот же API с одним и тем же файлом модели и одним и тем же вводом несколько раз.

В качестве простого инструмента отладки я пытался использовать Netron для визуализации экспортированной сети, а не узлов, которые выдают ошибкииметь спецификации, упомянутые в сообщении об ошибке (например, операция транспонирования, ожидающая вектор размером 5).

Также, если я печатаю модель с:

with tf.Session(graph=tf.Graph()) as sess:
  graph = tf.saved_model.loader.load(sess, [tag_constants.SERVE], export_dir)
print(graph.graph_def)

Ничто не указывает на то, что с моделью что-то не так.

Затем я попробовал инструмент saved_model_cli, используяточно такой же ввод, который я предоставил конечной точке

saved_model_cli run --dir /export_dir --tag_set serve --signature_def out --inputs 'x:0=test_in1.npy;1:0=test_in2.npy' --tf_debug

При работе модели через cli я отлично работаю.

Так что я немного растерялся относительно причины этой ошибки, так как модель, которую я использую, должна быть точно такой же.

Надеюсь, кто-нибудь может помочь:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...