ELW C формат требует «контекста» и «примеров функций». Примеры функций - это функции, которые различны для каждого элемента в списке запроса. Функции контекста - это те, которые зависят только от запроса. Таким образом, каждый запрос будет иметь список функций для каждого элемента в списке (примеры функций) и единый список функций для функций контекста.
Чтобы преобразовать в формат ELW C, начните со сбора все элементы для данного запроса. В приведенном ниже коде показан запрос с двумя элементами вместе с некоторой контекстной информацией. Используйте input_pb2.ExampleListWithContext()
, чтобы создать экземпляр средства форматирования ELW C. Тогда все, что вам нужно сделать, это подать в контексте и примерах.
Сохранить, используя TFRecordWriter
.
from tensorflow_serving.apis import input_pb2
import tensorflow as tf
def _float_feature(value):
return tf.train.Feature(float_list=tf.train.FloatList(value=[value]))
def _int64_feature(value):
return tf.train.Feature(int64_list=tf.train.Int64List(value=[value]))
def _bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
context = {
'custom_features_1': _float_feature(1.0),
'utility': _int64_feature(1),
}
examples = [
{
'custom_features_1': _float_feature(1.0),
'custom_features_2': _float_feature(1.5),
'utility': _int64_feature(1),
},
{
'custom_features_1': _float_feature(1.0),
'custom_features_2': _float_feature(2.1),
'utility': _int64_feature(0),
}
]
def to_example(dictionary):
return tf.train.Example(features=tf.train.Features(feature=dictionary))
ELWC = input_pb2.ExampleListWithContext()
ELWC.context.CopyFrom(to_example(context))
for expl in examples:
example_features = ELWC.examples.add()
example_features.CopyFrom(to_example(expl))
print(ELWC)