Сохранить предварительную обработку функции преобразования Tensorflow - PullRequest
0 голосов
/ 04 августа 2020

В настоящее время у нас есть модель, которую мы собираемся использовать для нашего API с использованием Tensorflow Serving. Поэтому нам нужно преобразовать текущие входные данные API в функции. Поскольку создание модели и использование модели выполняются в двух разных репозиториях, и я не хочу, чтобы преобразования были в двух разных репозиториях (чтобы они оставались одинаковыми для обоих репозиториев), я читал о Tensorflow Transform чтобы иметь возможность использовать 1 функцию для обработки как обучающих, так и обслуживающих данных. Однако мне трудно понять, как это будет работать в продакшене. Могу ли я включить сохранение функции предварительной обработки при сохранении модели? Или где я могу «разместить» эту функцию предварительной обработки?

Итак, чтобы было ясно, у меня есть модель, которая предварительно обрабатывает данные обучения. И я хочу использовать ту же функцию для данных обслуживания.

1 Ответ

0 голосов
/ 27 августа 2020

Все, что выполняется в TensorFlow Serving, является просто графом TensorFlow, будь то сама модель или ваши шаги предварительной обработки. Все, что вам нужно сделать, чтобы сложить два вместе, - это соединить два графика, подставив результат этапа предварительной обработки в качестве входных данных для модели, предполагая, что это совместимо.

Например, предположим, что ваша модель была что-то действительно простое, вроде этого, которое принимает ввод произвольной длины и вычисляет его норму L2:

input = tf.placeholder(tf.float32, [None])
norm = tf.norm(input, ord=2)

А затем у нас была функция подготовки данных, которую мы хотели применить, которая удваивала исходный ввод перед вычислением нормы L2 добавив его к самому себе:

input = tf.placeholder(tf.float32, [None])
doubled = tf.add(input, input)

Вы можете предварительно обработать и сделать «прогноз» (например, в этом игрушечном примере) в одном развертывании TensorFlow Serving, выполнив что-то вроде этого:

input = tf.placeholder(tf.float32, [None])
doubled = tf.add(input, input)
norm = tf.norm(input, ord=2)

Это не особенно полезно и, вероятно, намного проще, чем то, что вы делаете. Надеюсь, он передаст идею!

...