Я использую API оценки (TF 1.14) для своей пользовательской модели, читая образцы TFRecords, содержащие текст.
Обучение было выполнено со следующим input_fn:
def get_input_fn(filenames, mode, params):
def _parse_example(serialized_example, vocabs, params):
...
sequence_sample = tf.parse_single_example(serialized_example, sequence_features)
# get indices for myTextFeature - this will be the input for the model
myIndices = getIndices(sequence_sample['myTextFeature'], vocabs)
return {'myIndices': myIndices}, labels
def _input_fn():
# Get vocabulary (load from file using tf.contrib.lookup.index_table_from_tensor):
myVocabDict = getVocabOp(params.vocab_dir)
dataset = tf.data.Dataset.from_tensor_slices(filenames)
dataset = dataset.interleave(lambda x: tf.data.TFRecordDataset(x).map(lambda x: _parse_example(x, myVocabDict, params))
...
return dataset
return _input_fn
def getVocabOp(vocab_dir):
myVocab = load_pickle_file(vocab_dir)
return tf.contrib.lookup.index_table_from_file(myVocab)
def getIndices(myTextFeature, vocabs):
indices = vocabs.lookup(myTextFeature)
return indices
Поскольку ввод не передается напрямую в модель (текст, который необходимо преобразовать в индексы) - мне нужно, чтобы предварительная обработка происходила где-то в обслуживающей функции (оттуда она будет go до model_fn оценщика).
Предварительная обработка требует использования операции lookup_table (выполняется сначала путем загрузки словаря), и я хочу убедиться, что это произойдет только один раз , чтобы lookup_op не создавался при каждом вызове Обслуживание.
Как \ Где я должен загрузить файл словаря (список слов), и где я должен создать операцию index_table_from_file, которая будет создана только один раз функцией обслуживания оценщика?
def serving_input_fn():
receiver_tensors = tf.placeholder(tf.string, shape=[None, hparams.list_size])
### THIS IS THE QUESTION:
vocab = getVocabOp # SOMEHOW load the vocabulary from FILE
featuers = getIndices(myTextFeature, vocab) # PARSE EXAMPLE HERE
return tf.estimator.export.ServingInputReceiver(features, receiver_tensors)