Обслуживание с тензорным потоком: невозможно декодировать с помощью base64 - PullRequest
0 голосов
/ 29 ноября 2018

Я использую тонкий пакет resnet_v2_152 для обучения модели классификации.Затем он экспортируется в файл .pb для предоставления услуги.Поскольку вход является изображением, он должен быть закодирован с использованием безопасной для Интернета кодировки base64.Это выглядит так:

serialized_tf_example = tf.placeholder(dtype=tf.string, name='tf_example') decoded = tf.decode_base64(serialized_tf_example)

Затем я кодирую изображение с base64 таким образом:

img_path = '/Users/wuyanxue/Desktop/not_emoji1.jpeg'

img_b64 = base64.b64encode(open(img_path, 'rb').read())

s = str(img_b64, encoding='utf-8')

s = s.replace('+', '-').replace(r'/', '_')

Мои данные постов структурированы следующим образом: post_data = { 'signature_name': 'predict', 'instances':[ { 'inputs': { 'b64': s } }] } Наконец, я отправляю HTTP-запрос на этот сервер:

res = requests.post('server_address', json=post_data)

Это дает мне:

'{ "error": "Failed to process element: 0 key: inputs of \\\'instances\\\' list. Error: Invalid argument: Unable to base64 decode" }'

Я хочу знать, как это может встретиться?И есть ли какие-то решения для этого?

Ответы [ 2 ]

0 голосов
/ 29 декабря 2018

Этот вопрос уже решен.

post_data = {
'signature_name': 'predict',
'instances':[ { 
  'inputs': 
      { 'b64': s }
  }]
}

Мы видим, что входные данные имеют флаг 'b64', который показывает, что обслуживающий тензор поток декодирует с кодом base64.Это относится к тензорному потоку, обслуживающему внутренний метод.Итак, заполнитель:

serialized_tf_example = tf.placeholder(dtype=tf.string, name='tf_example')

будет напрямую получать двоичный формат входных данных, НО формат base64.

Итак, наконец,

decoded = tf.decode_base64(serialized_tf_example)

НЕ являетсянеобходимо.

0 голосов
/ 27 декабря 2018

У меня была такая же проблема при использовании python3.Я решил это, добавив 'b' - байтовидный объект вместо str по умолчанию к функции кодирования: b'{"instances" : [{"b64": "%s"}]}' % base64.b64encode( dl_request.content)

Надеюсь, это поможет, пожалуйста, смотрите этот ответ для дополнительной информации.Информация.

...