У меня есть обученная модель, которую я сохранил как savedmodel
(pb
). Я могу загрузить эту модель в другой скрипт Python и выполнить прогноз без каких-либо проблем. Я также только что установил рабочую среду TensorFlow-обслуживания с загруженной моделью. Однако, когда я пытаюсь вызвать REST-API из PHP, я получаю ошибку, несовместимую с размером матрицы.
Это определение моего savedmodel
:
signature_def['__saved_model_init_op']:
The given SavedModel SignatureDef contains the following input(s):
The given SavedModel SignatureDef contains the following output(s):
outputs['__saved_model_init_op'] tensor_info:
dtype: DT_INVALID
shape: unknown_rank
name: NoOp
Method name is:
signature_def['serving_default']:
The given SavedModel SignatureDef contains the following input(s):
inputs['dense_input'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 1067)
name: serving_default_dense_input:0
The given SavedModel SignatureDef contains the following output(s):
outputs['dense_2'] tensor_info:
dtype: DT_FLOAT
shape: (-1, 20)
name: StatefulPartitionedCall:0
Method name is: tensorflow/serving/predict
И этоошибка, возникающая при попытке вызвать функцию прогнозирования:
'{ "error": "Matrix size-incompatible: In[0]: [1067,1], In[1]: [1067,64]\n\t [[{{node sequential/dense/Relu}}]]" }'
Это моя модель Keras:
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(64, activation='relu', input_shape= x.shape[1:]),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(32, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(20, activation='softmax')
])
Где x.shape[1:]
равно 1067
.
Я пытаюсь предсказать, используя один вектор с 1067 значениями. Это работает без каких-либо проблем, когда я делаю это в Python.
У кого-нибудь есть идеи, где я иду не так?