Данные преобразования TF-Ranking в ELW C - форма ExampleListWithContext - PullRequest
0 голосов
/ 25 мая 2020

Я прочитал все руководства, видео и все остальное, но я понятия не имею, как преобразовать свой набор функций в формат таблицы данных ELW C для задачи TF-Rank ListWise. Описание этой структуры отсутствует.

Например, профиль ученика:

Student ID  age  grade  math%   physics%   english%  art%  math_competit  language_competit Rank
  14588     16    k12     98      67         88      100   first_place        very_good       5

Если у меня 20 учеников в одном классе, как я могу преобразовать эти данные, чтобы иметь возможность сделать списочный прогноз для каждого класса (теоретически в каждом классе есть 3 класса с 20 учениками)

1 Ответ

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

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...