Ввод переменной длины с Keras / Tensorflow Serving - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь построить модель Keras, которая будет экспортирована в TF, служащую для классификации текста. Модель поддерживает входные данные переменной длины (или, по крайней мере, я могу вводить входные данные любой длины при оценке), но я не могу понять, как описать это при генерации сигнатуры классификации для обслуживания TF

В настоящее время я делаю:

  # Create the input tensors
  serialized_tf_example = tf.placeholder(tf.string, name='tf_example')
  feature_configs = {'input': tf.VarLenFeature(tf.int64)}
  tf_example = tf.parse_example(serialized_tf_example, feature_configs)
  output_tensor = model(tf_example['input'])

  # Create the prediction output tensors
  values, indices = tf.nn.top_k(output_tensor, len(binarizer.classes_))
  table = tf.contrib.lookup.index_to_string_table_from_tensor(tf.constant(binarizer.classes_))
  prediction_classes = table.lookup(tf.to_int64(indices))

  # Generate a classification signature
  signature = tf.saved_model.signature_def_utils.classification_signature_def(
    serialized_tf_example,
    prediction_classes,
    values
  )

Однако это не удается, потому что VarLenFeature выполняет синтаксический анализ SparseTensor, который слой внедрения не поддерживает. Однако, если я изменю VarLenFeature на FixedLenFeature, то мне придется предоставить фиксированные входные данные для модели тензорного потока, которая для этого случая неоптимальна.

Фактическая ошибка, которую я получаю при попытке это:

TypeError: Failed to convert object of type <class 'tensorflow.python.framework.sparse_tensor.SparseTensor'> to Tensor. Contents: SparseTensor(indices=Tensor("ParseExample/ParseExample:0", shape=(?, 2), dtype=int64), values=Tensor("ParseExample/ParseExample:1", shape=(?,), dtype=int64), dense_shape=Tensor("ParseExample/ParseExample:2", shape=(2,), dtype=int64)). Consider casting elements to a supported type.

Я не уверен, что еще я могу сделать, чтобы сообщить TF, обслуживающему, что входные данные переменной длины поддерживаются на графике - или если это даже возможно при использовании кера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...