Задача
Я новичок в работе с Tensorflow (на самом деле это моя первая модель, которую я обслуживаю!), Поэтому я прошу прощения, если ответ очевиден!
Я размещаю модель Tensorflow на докере, используя это изображение . Проблема в том, что сервер отправляет следующую ошибку каждый раз, когда я пытаюсь отправить данные, чтобы обслуживаемая модель могла делать прогнозы.
W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at transpose_op.cc:157 : Invalid argument: transpose expects a vector of size 4. But input(1) is a vector of size 3
Справочная информация
- С помощью save_model_cli модель можно отобразить как
signature_def['predict']:
The given SavedModel SignatureDef contains the following input(s):
inputs['init_state'] tensor_info:
dtype: DT_FLOAT
shape: (2, 2, -1, 136)
name: policy_estimator/lstm/Placeholder:0
inputs['state'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 136)
name: policy_estimator/state:0
The given SavedModel SignatureDef contains the following output(s):
outputs['action_probs'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 260)
name: policy_estimator/Softmax:0
outputs['final_state'] tensor_info:
dtype: DT_FLOAT
shape: (2, 2, -1, 136)
name: policy_estimator/packed:0
Method name is: tensorflow/serving/predict
- Модель работает без ошибок перед хостингом, потому что мне удалось обучить модель, используя уже существующие данные.
- Ошибка, по-видимому, соответствует измерению состояния. Когда я изменяю размер данных для передачи в состояние с 2 (то есть (-1, 136)) на 3 (используя np.expand_dims), сообщение об ошибке меняется на
W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at transpose_op.cc:157 : Invalid argument: transpose expects a vector of size 5. But input(1) is a vector of size 3
и когда я изменяю размер на 4, он меняется на
W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at transpose_op.cc:157 : Invalid argument: transpose expects a vector of size 6. But input(1) is a vector of size 3
Однако, когда я делаю это 1 измерение, сообщение об ошибке остается как
W external/org_tensorflow/tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at transpose_op.cc:157 : Invalid argument: transpose expects a vector of size 4. But input(1) is a vector of size 3
- Сервер работает правильно, как я получаю
{
"model_version_status": [
{
"version": "1",
"state": "AVAILABLE",
"status": {
"error_code": "OK",
"error_message": ""
}
}
]
}
когда я запускаю curl http://model:8501/v1/models/saved_model
, где http://model:8501/v1/models/saved_model
- это место, где находится модель.
- Я прошу модель, использующую python,
payload = [{"init_state":np.reshape(initial_state, (2,2,-1,136)).tolist(), "state": np.reshape(points, (-1, 136)).tolist()}]
headers = {"content-type": "application/json"}
data = json.dumps({"signature_name": "predict", "instances":payload})
r = requests.post('http://model:8501/v1/models/saved_model:predict', data=data, headers=headers)
следуя этой документации . Где г ответ. В этом случае этот r возвращает ответ 400.
Личное заключение
Единственный вывод, который я мог сделать из этого, состоял в том, что, возможно, произошли изменения в модели при ее обслуживании. Однако это всего лишь предположение, поскольку я застрял и не уверен в следующем шаге.
Я не профессионал, так что снова, я прошу прощения, если я упустил что-то очевидное! Пожалуйста, порадуйте меня. Если какая-либо информация отсутствует, пожалуйста, сообщите мне, так как я сделаю все возможное, чтобы уточнить!