Я хотел бы включить мою пользовательскую логику предварительной обработки в экспортированную модель Keras для использования в Tensorflow Serving.Добавить предварительную обработку Tensorflow к существующей модели Keras (для использования в сервисе Tensorflow)
Моя предварительная обработка выполняет строку лексемизацию и использует внешний словарь, чтобы преобразовать каждый маркер индекс для ввода вложению слоя:
from keras.preprocessing import sequence
token_to_idx_dict = ... #read from file
# Custom Pythonic pre-processing steps on input_data
tokens = [tokenize(s) for s in input_data]
token_idxs = [[token_to_idx_dict[t] for t in ts] for ts in tokens]
tokens_padded = sequence.pad_sequences(token_idxs, maxlen=maxlen)
Модели архитектуры и обучение:
model = Sequential()
model.add(Embedding(max_features, 128, input_length=maxlen))
model.add(LSTM(128, activation='sigmoid'))
model.add(Dense(n_classes, activation='softmax'))
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam')
model.fit(x_train, y_train)
Поскольку модель будет использоваться в сервисе Tensorflow, я хочу включить всю логику предварительной обработки в саму модель (закодированную в экспортированном файле модели).
В: Как это сделать, используя только библиотеку Keras?
Я нашел this guide объясняет, как комбинировать Keras и Tensorflow. Но я все еще не уверен, как экспортировать все как одну модель.
Я знаю, что Tensorflow имеет встроенное разделение строк, file I/O и dictionary lookup operations.
Предварительная обработка логики с использованием операции Tensorflow:
# Get input text
input_string_tensor = tf.placeholder(tf.string, shape={1})
# Split input text by whitespace
splitted_string = tf.string_split(input_string_tensor, " ")
# Read index lookup dictionary
token_to_idx_dict = tf.contrib.lookup.HashTable(tf.contrib.lookup.TextFileInitializer("vocab.txt", tf.string, 0, tf.int64, 1, delimiter=","), -1)
# Convert tokens to indexes
token_idxs = token_to_idx_dict.lookup(splitted_string)
# Pad zeros to fixed length
token_idxs_padded = tf.pad(token_idxs, ...)
Q: Как я могу использовать эти Tensorflow предопределенные операции предварительной обработки и мои слои Keras вместе как поезд, а затем экспортировать модель как «черный ящик» для использования в Tensorflow Serving?
Найден решение? –
@OphirYoktan См. Мой ответ ниже. – Qululu