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