При создании пользовательской процедуры прогнозирования с моделью Keras (Tensorflow 2.1) у меня возникают проблемы с выяснением того, в какую форму поступают входные данные json, и как их читать в классе предикторов для нескольких входных данных. Все примеры пользовательских процедур прогнозирования в документации используют простые плоские списки с одним вводом. Например, если мы отправим наши входные данные в виде:
{"instances": [
{
"event_type_input": [1, 2, 20],
"event_dwelltime_input": [1.368, 0.017, 0.0],
"rf_input": [1.2, -2.8]},
{
"event_type_input": [14, 40, 20],
"event_dwelltime_input": [1.758, 13.392, 0.0],
"rf_input": [1.29, -2.87]}
]}
Как мы должны принять входящий json в нашем классе предикторов?
class MyPredictor(object):
def __init__(self, model):
self.model = model
def predict(self, instances, **kwargs):
inputs = np.array(instances)
# The above example from the docs is wrong for multiple inputs
# What should our inputs be to get the inputs in the right shape
# for our keras model?
outputs = self.model.predict(inputs)
return outputs.tolist()
Наши json входные данные для платформы Google ai представляют собой список словарей. Однако для модели keras наши входные данные должны иметь различную форму, например:
inputs = {
"event_type_input": np.array([[1, 2, 20], [14, 40, 20]]),
"event_dwelltime_input": np.array([[1.368, 0.017, 0.0], [1.758, 13.392, 0.0]])
"rf_input": np.array([[1.2, -2.8], [1.29, -2.87]]}
model.predict(inputs)
Прав ли я в том, что в таком случае нужно просто изменить форму экземпляров? Единственная путаница заключается в том, что при использовании структуры tenorflow (вместо пользовательской процедуры прогнозирования) она обрабатывает прогнозирование на входном штрафе json, и я подумал, что все, что делает инфраструктура tenorflow, вызывает метод .predict для экземпляров ( если только не происходит какое-то скрытое преобразование данных. Я не мог найти источник, чтобы выяснить, что именно происходит)
Основной вопрос: как мы должны написать наш класс предиктора, чтобы принимать в экземпляры, в которых мы можем запустить метод model.predict?