Пользовательский оценщик Tensorflow и tf.contrib.predictor.from_estimator передают тензор - значение канала не может быть объектом tf.Tensor - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть пользовательский оценщик 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 я вычисляю тензор, который необходимо подать в predictorthis.

 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, чтобы он не включал заполнители?Я все еще хотел бы использовать предиктор из-за увеличения производительности.

...