Системная информация
- Linux Ubuntu 16.04 :
- TensorFlow Serving установлен из пункта (1.10.1):
- Версия обслуживания TensorFlow 1.10.1 :
Опишите проблему
Я обнаружил сообщение об ошибке при подключении к собственной модели, я протестировал файл .pb с save_model.load, и все хорошо, но когда я отправляю запрос через клиента, появляется следующая ошибка:
<_ Рандеву РПЦ, которое заканчивается:
status = StatusCode.INVALID_ARGUMENT
details = "Тензор: 0, указанный в feed_devices или fetch_devices, не найден в графике"
debug_error_string = "{" созданный ":" @ 1537040456.210975912 "," описание ":" Ошибка, полученная от узла "," файл ":" src / core / lib / surface / call.cc "," file_line ": 1099," grpc_message ":" <strong>Тензор: 0 , указанный в feed_devices или fetch_devices, не найден в графике "," grpc_status ": 3}"
>
Проводная часть, о которой сообщается, что Тензор не найден, не имеет имени, которое, я думаю, вызвано тем, что клиент просит ввести этот пустой тензор. Но я просто не понимаю, откуда может произойти эта операция.
Точные шаги для воспроизведения
Я создаю обслуживание на основе примера кода клиента mnist и начального клиента. Экспортированная модель .pb была успешно протестирована путем перезагрузки через tf.saved_model.loader.load, поэтому я думаю, что проблема вызвана запросом.
Это часть кода клиента:
channel = grpc.insecure_channel(FLAGS.server)
stub = prediction_service_pb2_grpc.PredictionServiceStub(channel)
request = predict_pb2.PredictRequest()
request.model_spec.name = 'chiron'
request.model_spec.signature_name = tf.saved_model.signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY
collector = _Result_Collection()
for batch_x,seq_len,i,f,N,reads_n in data_iterator(FLAGS.raw_dir):
request.inputs['signals'].CopyFrom(
tf.contrib.util.make_tensor_proto(batch_x, shape=[FLAGS.batch_size, CONF.SEGMENT_LEN]))
request.inputs['seq_length'].CopyFrom(
tf.contrib.util.make_tensor_proto(seq_len, shape=[FLAGS.batch_size]))
result_future = stub.Predict.future(request, 5.0) # 5 seconds
result_future.add_done_callback(_post_process(collector,i,f))