2

TFX の tensorflow-data-validation に関して、いつ *Gen コンポーネントを使用する必要があるか、TFDV が提供するメソッドを使用する必要があるかを理解しようとしています。

具体的には、私を混乱させているのは、これを私のExampleGenとして持っていることです:

output = example_gen_pb2.Output(
         split_config=example_gen_pb2.SplitConfig(splits=[
             example_gen_pb2.SplitConfig.Split(name='train', hash_buckets=7),
             example_gen_pb2.SplitConfig.Split(name='test', hash_buckets=2),
             example_gen_pb2.SplitConfig.Split(name='eval', hash_buckets=1)
         ]))
example_gen = CsvExampleGen(input_base=os.path.join(base_dir, data_dir), 
output_config=output)
context.run(example_gen)

そこで、元の列車ファイルからではなく、列車の分割から統計を生成したいと考えたので、次のようにしてみました。

statistics_gen = StatisticsGen(
  examples=example_gen.outputs['examples'],
  exclude_splits=['eval']
)
context.run(statistics_gen)

そしてそれはうまくいきます。しかし、その後、スキーマを推測してみました (ブザー音を挿入):

schema = tfdv.infer_schema(statistics=statistics_gen)

故意に、これにより以下のエラーが発生します。私はそれが正しいタイプではないことを十分に期待していましたが、StatsGen オブジェクトから適切な出力を抽出して infer_schema() メソッドにフィードする方法がわかりません

または、*Gen ベースのコンポーネント構造のみを追求すると、ビルドされますが、スキーマや統計などを適切に視覚化する方法がわかりません。最後に、ここで tfdv.infer_schema() 呼び出しを使用している理由同様に不運な「display_schema()」呼び出しで、SchemaGen に渡そうとするとエラーが発生します。

上記のエラー:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-93ceafbcb04a> in <module>
----> 1 schema = tfdv.infer_schema(statistics=validate_stats)
      2 tfdv.write_schema_text(schema, schema_location)
      3 
      4 tfdv.display(infer_schema)

/usr/local/lib/python3.6/dist-packages/tensorflow_data_validation/api/validation_api.py in infer_schema(statistics, infer_feature_shape, max_string_domain_size, schema_transformations)
     95     raise TypeError(
     96         'statistics is of type %s, should be '
---> 97         'a DatasetFeatureStatisticsList proto.' % type(statistics).__name__)
     98 
     99   # This will raise an exception if there are multiple datasets, none of which

TypeError: statistics is of type ExampleValidator, should be a DatasetFeatureStatisticsList proto.

私が実際に理解しようとしているのは、なぜ SchemaGen や StatisticsGen などのコンポーネントを使用して、TFDV から価値を得るために内部関数を使用する必要があるのか​​ということです。インタラクティブなパイプラインと非インタラクティブなシナリオを提供していると思いますが、グーグルでは不明です。

ファイル リーダーに頼るのではなく、データの分割に基づいて統計情報を生成して表示する方法があれば、それも知りたいです。(明らかでない場合は、はい、私は TFX を初めて使用します)。

ティア

4

1 に答える 1