У меня есть пользовательский оценщик E1, который использует tf.contrib.predictor.from_estimator
другого пользовательского оценщика E2 в своих операциях прогнозирования.
Предиктор от оценщика определяется с помощью следующей входной функции обслуживания:
def serving_input_fn():
inputs_x = tf.placeholder(tf.int64, shape=[batch_size, input_len], name='inputs_x')
inputs_y = tf.placeholder(tf.int64, shape=[batch_size, input_len], name='inputs_y')
features = {'inputs_x':inputs_x, 'inputs_y':inputs_y}
return tf.estimator.export.ServingInputReceiver(features, features)
predictor = tf.contrib.predictor.from_estimator(custom_estimator_model_2, serving_input_fn)
model = CustomEstimator(model_dir, params, predictor=predictor)
В модельной функции E1 я вычисляю тензор, который необходимо подать в predictor
this.
feats_x = tf.gather_nd(.....)
feats_y = tf.gather_nd(.....)
inputs = {'inputs_x': feats_x, 'inputs_y': feats_y}
predictor(inputs)
Однако я не могу подать тензор в канал.
TypeError: The value of a feed cannot be a tf.Tensor object. Acceptable feed values include Python scalars, strings, lists, numpy ndarrays, or TensorHandles.
Поскольку все мои тензорные операции находятся внутри модельной функции, сеанс не предоставлен мне для оценки этих тензоров перед их подачей.Есть ли альтернатива решению этой проблемы?Должен ли я изменить свой serve_input_fn, чтобы он не включал заполнители?Я все еще хотел бы использовать предиктор из-за увеличения производительности.