TensorFlow Extended: указание валентности функций в схеме

В настоящее время я пытаюсь наполнить набор данных несколькими столбцами с многовалентными функциями через конвейер TensorFlow Extended (TFX). Вот строка из моих выборочных данных:

user_id                     29601
product_id                     28
touched_product_id     [2435, 28]
liked_product_id       [2435, 28]
disliked_product_id            []
target                          1

Как видите, столбцы (функции) touched_product_id, liked_product_id, disliked_product_id многовалентны.

Теперь, чтобы пропустить эти данные через уровень проверки TFX, я следую приведенному ниже руководству:

https://www.tensorflow.org/tfx/tutorials/tfx/components_keras

В соответствии с руководством я создаю несколько TFRecord файлов, используя экземпляр CSVExampleGen, и перехожу к генерации статистики и схемы, как показано ниже:

# create train and eval records
c = CsvExampleGen(input_base='sample_train')
context.run(c)

# generate statistics
statistics_gen = StatisticsGen(
    examples=c.outputs['examples']
)
context.run(statistics_gen)

# generate schema
schema_gen = SchemaGen(
    statistics=statistics_gen.outputs['statistics'],
    infer_feature_shape=False)
context.run(schema_gen)
context.show(schema_gen.outputs['schema'])

Последняя схема, отображаемая приведенным выше кодом:

                        Type  Presence Valency Domain
Feature name                                         
'disliked_product_id'  BYTES  required  single      -
'liked_product_id'     BYTES  required  single      -
'product_id'             INT  required  single      -
'target'                 INT  required  single      -
'touched_product_id'   BYTES  required  single      -
'user_id'                INT  required  single      -

Ясно, что многовалентность ошибочно считается однолистной. Пытаясь исправить это, я вручную загрузил Schema proto и попытался настроить свойство valence.

schema_path = os.path.join(schema_gen.outputs['schema'].get()[0].uri, 'schema.pbtxt')
schema = schema_pb2.Schema()
contents = file_io.read_file_to_string(schema_path)
schema = text_format.Parse(contents, schema)

# THIS LINE DOES NOT WORK
tfdv.get_feature(schema, 'user_id').valence = 'multiple'

Ясно, что эта последняя строка не работает, потому что, к моему удивлению, отсутствует свойство valence. Я попытался изучить спецификацию Schema proto, но не нашел свойства valence. Кто-нибудь знает, как я могу это решить? Любое руководство было бы невероятным.


person Michael    schedule 30.10.2020    source источник


Ответы (1)


попробуйте установить для feature.value_count.min или feature.value_count.max значение больше 1

person Amine_h    schedule 02.11.2020