1

現在、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_idliked_product_iddisliked_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を調整しようとしました。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が見つかりませんでした。valenceこれを解決する方法を知っている人はいますか?どんなガイダンスも素晴らしいでしょう。

4

1 に答える 1