ExampleGen TFX Ardışık Düzen Bileşeni

ExampleGen TFX Pipeline bileşeni, verileri TFX ardışık düzenlerine alır. Diğer TFX bileşenleri tarafından okunacak Örnekler oluşturmak için harici dosyaları/hizmetleri kullanır. Ayrıca tutarlı ve yapılandırılabilir bölüm sağlar ve en iyi ML uygulaması için veri kümesini karıştırır.

  • Tüketim: CSV, TFRecord , Avro, Parquet ve BigQuery gibi harici veri kaynaklarından gelen veriler.
  • Yayılanlar: yük biçimine bağlı olarak tf.Example kayıtları, tf.SequenceExample kayıtları veya proto biçimi.

ÖrnekGen ve Diğer Bileşenler

ExampleGen, SchemaGen , StatisticsGen ve Example Validator gibi TensorFlow Veri Doğrulama kitaplığını kullanan bileşenlere veri sağlar. Ayrıca, TensorFlow Transform kitaplığından yararlanan Transform öğesine ve sonuç olarak çıkarım sırasında dağıtım hedeflerine veri sağlar.

Veri Kaynakları ve Formatları

Şu anda standart bir TFX kurulumu, bu veri kaynakları ve formatlar için tam ExampleGen bileşenlerini içerir:

Bu veri kaynakları ve biçimleri için ExampleGen bileşenlerinin geliştirilmesini sağlayan özel yürütücüler de mevcuttur:

Özel yürütücülerin nasıl kullanılacağı ve geliştirileceği hakkında daha fazla bilgi için kaynak koddaki kullanım örneklerine ve bu tartışmaya bakın.

Ayrıca, bu veri kaynakları ve biçimleri, özel bileşen örnekleri olarak mevcuttur:

Apache Beam tarafından desteklenen veri biçimlerini alma

Apache Beam, çok çeşitli veri kaynaklarından ve biçimlerden veri almayı destekler ( aşağıya bakın ). Bu yetenekler, bazı mevcut ExampleGen bileşenleri tarafından gösterilen TFX için özel ExampleGen bileşenleri oluşturmak için kullanılabilir ( aşağıya bakın ).

ExampleGen Bileşeni nasıl kullanılır

Desteklenen veri kaynakları için (şu anda, CSV dosyaları, tf.Example , tf.SequenceExample ve protokol biçimine sahip TFRecord dosyaları ve BigQuery sorgularının sonuçları) ExampleGen ardışık düzen bileşeni doğrudan dağıtımda kullanılabilir ve çok az özelleştirme gerektirir. Örneğin:

example_gen = CsvExampleGen(input_base='data_root')

veya harici TFRecord'u tf.Example ile doğrudan içe aktarmak için aşağıdaki gibi:

example_gen = ImportExampleGen(input_base=path_to_tfrecord_dir)

Yayılma, Sürüm ve Bölme

Span, eğitim örneklerinin bir gruplandırılmasıdır. Verileriniz bir dosya sisteminde kalıcıysa, her Span ayrı bir dizinde saklanabilir. Bir Span'ın semantiği, TFX'e sabit kodlanmış değildir; Span, bir günlük veriye, bir saatlik veriye veya göreviniz için anlamlı olan diğer herhangi bir gruplandırmaya karşılık gelebilir.

Her Span, birden çok veri Sürümünü tutabilir. Örnek vermek gerekirse, düşük kaliteli verileri temizlemek için bir Span'dan bazı örnekleri kaldırırsanız, bu, o Span'ın yeni bir Sürümü ile sonuçlanabilir. Varsayılan olarak, TFX bileşenleri bir Span içindeki en son Sürümde çalışır.

Bir Yayılım içindeki her Sürüm ayrıca birden çok Bölmeye bölünebilir. Bir Span'ı bölmek için en yaygın kullanım durumu, onu eğitim ve değerlendirme verilerine bölmektir.

Açıklıklar ve Bölmeler

Özel giriş/çıkış ayrımı

ExampleGen'in çıkaracağı tren/değerlendirme bölme oranını özelleştirmek için, ExampleGen bileşeni için output_config ayarlayın. Örneğin:

# Input has a single split 'input_dir/*'.
# Output 2 splits: train:eval=3:1.
output = proto.Output(
             split_config=example_gen_pb2.SplitConfig(splits=[
                 proto.SplitConfig.Split(name='train', hash_buckets=3),
                 proto.SplitConfig.Split(name='eval', hash_buckets=1)
             ]))
example_gen = CsvExampleGen(input_base=input_dir, output_config=output)

Bu örnekte hash_buckets nasıl ayarlandığına dikkat edin.

Halihazırda bölünmüş bir giriş kaynağı için, ExampleGen bileşeni için input_config ayarlayın:


# Input train split is 'input_dir/train/*', eval split is 'input_dir/eval/*'.
# Output splits are generated one-to-one mapping from input splits.
input = proto.Input(splits=[
                example_gen_pb2.Input.Split(name='train', pattern='train/*'),
                example_gen_pb2.Input.Split(name='eval', pattern='eval/*')
            ])
example_gen = CsvExampleGen(input_base=input_dir, input_config=input)

Dosya tabanlı örnek gen (örn. CsvExampleGen ve ImportExampleGen) için pattern , giriş temel yolu tarafından verilen kök dizini ile giriş dosyalarına eşlenen glob göreli dosya kalıbıdır. Sorgu tabanlı örnek gen (ör. BigQueryExampleGen, PrestoExampleGen) için pattern bir SQL sorgusudur.

Varsayılan olarak, tüm girdi taban dizini tek bir girdi bölme işlemi olarak değerlendirilir ve tren ve değerlendirme çıktı bölme işlemi 2:1 oranında oluşturulur.

ExampleGen'in giriş ve çıkış bölme yapılandırması için lütfen proto/example_gen.proto'ya bakın. Ve aşağı yönde özel bölmeleri kullanmak için aşağı akış bileşenleri kılavuzuna bakın.

Bölme Yöntemi

hash_buckets bölme yöntemini kullanırken, tüm kaydın yerine, örnekleri bölümlemek için bir özellik kullanılabilir. Bir özellik varsa, ExampleGen, bölüm anahtarı olarak o özelliğin parmak izini kullanacaktır.

Bu özellik, örneklerin belirli özelliklerine göre kararlı bir bölme sağlamak için kullanılabilir: örneğin, bölüm özelliği adı olarak "user_id" seçilmişse, bir kullanıcı her zaman aynı bölmeye konur.

Bir "özelliğin" ne anlama geldiğinin ve bir "özelliğin" belirtilen adla nasıl eşleştirileceğinin yorumlanması, ExampleGen uygulamasına ve örneklerin türüne bağlıdır.

Hazır ExampleGen uygulamaları için:

  • tf.Example oluşturursa, "özellik", tf.Example.features.feature içindeki bir giriş anlamına gelir.
  • tf.SequenceExample oluşturursa, "özellik", tf.SequenceExample.context.feature içindeki bir giriş anlamına gelir.
  • Yalnızca int64 ve bayt özellikleri desteklenir.

Aşağıdaki durumlarda, ExampleGen çalışma zamanı hataları atar:

  • Belirtilen özellik adı örnekte mevcut değil.
  • Boş özellik: tf.train.Feature() .
  • Desteklenmeyen özellik türleri, örneğin kayan özellikler.

Örneklerdeki bir özelliğe dayalı olarak tren/değerlendirme ayrımının çıktısını almak için, ExampleGen bileşeni için output_config ayarlayın. Örneğin:

# Input has a single split 'input_dir/*'.
# Output 2 splits based on 'user_id' features: train:eval=3:1.
output = proto.Output(
             split_config=proto.SplitConfig(splits=[
                 proto.SplitConfig.Split(name='train', hash_buckets=3),
                 proto.SplitConfig.Split(name='eval', hash_buckets=1)
             ],
             partition_feature_name='user_id'))
example_gen = CsvExampleGen(input_base=input_dir, output_config=output)

Bu örnekte partition_feature_name öğesinin nasıl ayarlandığına dikkat edin.

açıklık

Span, giriş glob modelinde '{SPAN}' özelliği kullanılarak alınabilir:

  • Bu özellik, rakamlarla eşleşir ve verileri ilgili SPAN numaralarıyla eşler. Örneğin, 'data_{SPAN}-*.tfrecord', 'data_12-a.tfrecord', 'date_12-b.tfrecord' gibi dosyaları toplayacaktır.
  • İsteğe bağlı olarak, bu özellik eşlendiğinde tam sayıların genişliği ile belirtilebilir. Örneğin, 'data_{SPAN:2}.file', 'data_02.file' ve 'data_27.file' (sırasıyla Span-2 ve Span-27 için girdiler olarak) gibi dosyalara eşlenir, ancak 'data_1 ile eşlenmez. file' veya 'data_123.file'.
  • SPAN özelliği eksik olduğunda, her zaman Span '0' olduğu varsayılır.
  • SPAN belirtilirse, ardışık düzen en son yayılma alanını işleyecek ve yayılma numarasını meta verilerde depolayacaktır.

Örneğin, giriş verileri olduğunu varsayalım:

  • '/tmp/span-1/tren/veri'
  • '/tmp/span-1/eval/veri'
  • '/tmp/span-2/tren/veri'
  • '/tmp/span-2/eval/veri'

ve giriş yapılandırması aşağıdaki gibi gösterilir:

splits {
  name: 'train'
  pattern: 'span-{SPAN}/train/*'
}
splits {
  name: 'eval'
  pattern: 'span-{SPAN}/eval/*'
}

boru hattını tetiklerken şunları işleyecektir:

  • tren bölünmüş olarak '/tmp/span-2/train/data'
  • '/tmp/span-2/eval/data' değerlendirme bölümü olarak

Açıklık numarası '2' olarak. Daha sonra '/tmp/span-3/...' hazırsa, ardışık düzeni yeniden tetikleyin ve işlem için '3' aralığını alacaktır. Aşağıda, yayılma özelliğinin kullanılmasına ilişkin kod örneği gösterilmektedir:

input = proto.Input(splits=[
                proto.Input.Split(name='train',
                                            pattern='span-{SPAN}/train/*'),
                proto.Input.Split(name='eval',
                                            pattern='span-{SPAN}/eval/*')
            ])
example_gen = CsvExampleGen(input_base='/tmp', input_config=input)

Belirli bir aralığın alınması, aşağıda ayrıntıları verilen RangeConfig ile yapılabilir.

Tarih

Veri kaynağınız tarihe göre dosya sisteminde düzenlenmişse, TFX tarihleri ​​doğrudan yayılma sayılarına eşlemeyi destekler. Tarihlerden aralıklara eşlemeyi temsil eden üç özellik vardır: {YYYY}, {MM} ve {DD}:

  • Belirtilen üç özellik, giriş glob modelinde tamamen mevcut olmalıdır:
  • {SPAN} belirtimi ya da bu tarih belirtimi kümesi özel olarak belirtilebilir.
  • YYYY'den yıl, AA'dan ay ve DD'den ayın günü ile bir takvim tarihi hesaplanır, ardından aralık numarası, unix döneminden bu yana geçen gün sayısı olarak hesaplanır (ör. 1970-01-01). Örneğin, "log-{YYYY}{MM}{DD}.data", "log-19700101.data" dosyasıyla eşleşir ve bunu Span-0 için girdi olarak ve "log-20170101.data" için girdi olarak kullanır. Açıklık-17167.
  • Bu tarih özellikleri kümesi belirtilirse, ardışık düzen en son tarihi işleyecek ve karşılık gelen yayılma numarasını meta verilerde depolayacaktır.

Örneğin, takvim tarihine göre düzenlenmiş giriş verileri olduğunu varsayalım:

  • '/tmp/1970-01-02/tren/veri'
  • '/tmp/1970-01-02/eval/veri'
  • '/tmp/1970-01-03/tren/veri'
  • '/tmp/1970-01-03/eval/veri'

ve giriş yapılandırması aşağıdaki gibi gösterilir:

splits {
  name: 'train'
  pattern: '{YYYY}-{MM}-{DD}/train/*'
}
splits {
  name: 'eval'
  pattern: '{YYYY}-{MM}-{DD}/eval/*'
}

boru hattını tetiklerken şunları işleyecektir:

  • tren bölünmüş olarak '/tmp/1970-01-03/train/data'
  • '/tmp/1970-01-03/eval/data' değerlendirme ayırma olarak

Açıklık numarası '2' olarak. Daha sonra '/tmp/1970-01-04/...' hazırsa, işlem hattını tekrar tetikleyin ve işlem için '3' aralığını alacaktır. Aşağıda, tarih belirtimini kullanmak için kod örneği gösterilmektedir:

input = proto.Input(splits=[
                proto.Input.Split(name='train',
                                            pattern='{YYYY}-{MM}-{DD}/train/*'),
                proto.Input.Split(name='eval',
                                            pattern='{YYYY}-{MM}-{DD}/eval/*')
            ])
example_gen = CsvExampleGen(input_base='/tmp', input_config=input)

Sürüm

Sürüm, giriş glob modelinde '{VERSION}' özelliği kullanılarak alınabilir:

  • Bu özellik, rakamlarla eşleşir ve verileri SPAN altındaki ilgili VERSION numaralarıyla eşler. Sürüm spesifikasyonunun Span veya Date spesifikasyonu ile birlikte kullanılabileceğini unutmayın.
  • Bu özellik, isteğe bağlı olarak, SPAN spesifikasyonu ile aynı şekilde genişlikle de belirtilebilir. örneğin 'span-{SPAN}/version-{VERSION:4}/data-*'.
  • VERSION özelliği eksik olduğunda, sürüm Yok olarak ayarlanır.
  • SPAN ve VERSION belirtilmişse, ardışık düzen en son yayılma için en son sürümü işler ve sürüm numarasını meta verilerde depolar.
  • VERSION belirtilirse, ancak SPAN (veya tarih özelliği) belirtilmezse, bir hata verilir.

Örneğin, giriş verileri olduğunu varsayalım:

  • '/tmp/span-1/ver-1/train/data'
  • '/tmp/span-1/ver-1/eval/data'
  • '/tmp/span-2/ver-1/train/data'
  • '/tmp/span-2/ver-1/eval/data'
  • '/tmp/span-2/ver-2/train/data'
  • '/tmp/span-2/ver-2/eval/data'

ve giriş yapılandırması aşağıdaki gibi gösterilir:

splits {
  name: 'train'
  pattern: 'span-{SPAN}/ver-{VERSION}/train/*'
}
splits {
  name: 'eval'
  pattern: 'span-{SPAN}/ver-{VERSION}/eval/*'
}

boru hattını tetiklerken şunları işleyecektir:

  • tren bölünmüş olarak '/tmp/span-2/ver-2/train/data'
  • değerlendirme ayırma olarak '/tmp/span-2/ver-2/eval/data'

yayılma numarası '2' ve sürüm numarası '2' olarak. Daha sonra '/tmp/span-2/ver-3/...' hazırsa, ardışık düzeni yeniden başlatmanız yeterlidir ve işlem için yayılma alanı '2' ve sürüm '3' alacaktır. Aşağıda, sürüm özelliklerini kullanmak için kod örneği gösterilmektedir:

input = proto.Input(splits=[
                proto.Input.Split(name='train',
                                            pattern='span-{SPAN}/ver-{VERSION}/train/*'),
                proto.Input.Split(name='eval',
                                            pattern='span-{SPAN}/ver-{VERSION}/eval/*')
            ])
example_gen = CsvExampleGen(input_base='/tmp', input_config=input)

Aralık Yapılandırması

TFX, farklı TFX varlıkları için aralıkları tanımlamak için kullanılan soyut bir yapılandırma olan aralık yapılandırmasını kullanarak dosya tabanlı ExampleGen'de belirli bir aralığın alınmasını ve işlenmesini destekler. Belirli bir yayılma alanını almak için dosya tabanlı ExampleGen bileşeni için range_config ayarlayın. Örneğin, giriş verileri olduğunu varsayalım:

  • '/tmp/span-01/tren/veri'
  • '/tmp/span-01/eval/veri'
  • '/tmp/span-02/tren/veri'
  • '/tmp/span-02/eval/veri'

Span '1' ile verileri özel olarak almak ve işlemek için giriş yapılandırmasına ek olarak bir aralık yapılandırması belirtiriz. ExampleGen'in yalnızca tek aralıklı statik aralıkları desteklediğini unutmayın (belirli bireysel yayılmaların işlenmesini belirtmek için). Bu nedenle, StaticRange için start_span_number, end_span_number'a eşit olmalıdır. Sağlanan yayılma alanını ve sıfır doldurma için yayılma genişliği bilgisini (sağlanmışsa) kullanarak, ExampleGen, sağlanan bölme modellerindeki SPAN belirtimini istenen yayılma numarasıyla değiştirecektir. Bir kullanım örneği aşağıda gösterilmiştir:

# In cases where files have zero-padding, the width modifier in SPAN spec is
# required so TFX can correctly substitute spec with zero-padded span number.
input = proto.Input(splits=[
                proto.Input.Split(name='train',
                                            pattern='span-{SPAN:2}/train/*'),
                proto.Input.Split(name='eval',
                                            pattern='span-{SPAN:2}/eval/*')
            ])
# Specify the span number to be processed here using StaticRange.
range = proto.RangeConfig(
                static_range=proto.StaticRange(
                        start_span_number=1, end_span_number=1)
            )

# After substitution, the train and eval split patterns will be
# 'input_dir/span-01/train/*' and 'input_dir/span-01/eval/*', respectively.
example_gen = CsvExampleGen(input_base=input_dir, input_config=input,
                            range_config=range)

Aralık yapılandırması, SPAN özelliği yerine tarih özelliği kullanılıyorsa, belirli tarihleri ​​işlemek için de kullanılabilir. Örneğin, takvim tarihine göre düzenlenmiş giriş verileri olduğunu varsayalım:

  • '/tmp/1970-01-02/tren/veri'
  • '/tmp/1970-01-02/eval/veri'
  • '/tmp/1970-01-03/tren/veri'
  • '/tmp/1970-01-03/eval/veri'

2 Ocak 1970 tarihli verileri özel olarak almak ve işlemek için aşağıdakileri yapıyoruz:

from  tfx.components.example_gen import utils

input = proto.Input(splits=[
                proto.Input.Split(name='train',
                                            pattern='{YYYY}-{MM}-{DD}/train/*'),
                proto.Input.Split(name='eval',
                                            pattern='{YYYY}-{MM}-{DD}/eval/*')
            ])
# Specify date to be converted to span number to be processed using StaticRange.
span = utils.date_to_span_number(1970, 1, 2)
range = proto.RangeConfig(
                static_range=range_config_pb2.StaticRange(
                        start_span_number=span, end_span_number=span)
            )

# After substitution, the train and eval split patterns will be
# 'input_dir/1970-01-02/train/*' and 'input_dir/1970-01-02/eval/*',
# respectively.
example_gen = CsvExampleGen(input_base=input_dir, input_config=input,
                            range_config=range)

Özel ÖrnekGen

Halihazırda mevcut olan ExampleGen bileşenleri ihtiyaçlarınızı karşılamıyorsa, farklı veri kaynaklarından veya farklı veri formatlarında okuma yapmanızı sağlayacak özel bir ExampleGen oluşturabilirsiniz.

Dosya Tabanlı ÖrnekGen Özelleştirme (Deneysel)

İlk olarak BaseExampleGenExecutor'ı, tren/değerlendirme giriş bölmenizden TF örneklerine dönüştürmeyi sağlayan özel bir Beam PTransform ile genişletin. Örneğin, CsvExampleGen yürütücüsü , girdi CSV bölünmesinden TF örneklerine dönüştürme sağlar.

Ardından, CsvExampleGen bileşeninde olduğu gibi yukarıdaki yürütücü ile bir bileşen oluşturun. Alternatif olarak, aşağıda gösterildiği gibi standart ExampleGen bileşenine özel bir yürütücü iletin.

from tfx.components.base import executor_spec
from tfx.components.example_gen.csv_example_gen import executor

example_gen = FileBasedExampleGen(
    input_base=os.path.join(base_dir, 'data/simple'),
    custom_executor_spec=executor_spec.ExecutorClassSpec(executor.Executor))

Artık Avro ve Parquet dosyalarının bu yöntemle okunmasını da destekliyoruz.

Ek Veri Formatları

Apache Beam, bir dizi ek veri biçiminin okunmasını destekler. Işın G/Ç Dönüşümleri aracılığıyla. Avro örneğine benzer bir desen kullanarak Işın G/Ç Dönüşümlerinden yararlanarak özel ExampleGen bileşenleri oluşturabilirsiniz.

  return (pipeline
          | 'ReadFromAvro' >> beam.io.ReadFromAvro(avro_pattern)
          | 'ToTFExample' >> beam.Map(utils.dict_to_example))

Bu yazı itibariyle, Beam Python SDK için şu anda desteklenen formatlar ve veri kaynakları şunları içerir:

  • Amazon S3
  • Apaçi Avro
  • Apache Hadoop'u
  • Apaçi Kafka
  • Apaçi Parke
  • Google Bulut BigQuery
  • Google Bulut Büyük Tablo
  • Google Bulut Veri Deposu
  • Google Cloud Pub/Sub
  • Google Bulut Depolama (GCS)
  • MongoDB

En son liste için Beam belgelerine bakın.

Sorgu Tabanlı ÖrnekGen Özelleştirmesi (Deneysel)

İlk olarak, BaseExampleGenExecutor'ı harici veri kaynağından okuyan özel bir Beam PTransform ile genişletin. Ardından, QueryBasedExampleGen'i genişleterek basit bir bileşen oluşturun.

Bu, ek bağlantı yapılandırmaları gerektirebilir veya gerektirmeyebilir. Örneğin, BigQuery yürütücüsü , bağlantı yapılandırma ayrıntılarını özetleyen varsayılan bir beam.io bağlayıcısını kullanarak okur. Presto yürütücüsü , giriş olarak özel bir Beam PTransform ve özel bir bağlantı yapılandırma protokolü gerektirir.

Özel bir ExampleGen bileşeni için bir bağlantı yapılandırması gerekiyorsa, yeni bir protobuf oluşturun ve bunu artık isteğe bağlı bir yürütme parametresi olan custom_config aracılığıyla iletin. Aşağıda, yapılandırılmış bir bileşenin nasıl kullanılacağına ilişkin bir örnek verilmiştir.

from tfx.examples.custom_components.presto_example_gen.proto import presto_config_pb2
from tfx.examples.custom_components.presto_example_gen.presto_component.component import PrestoExampleGen

presto_config = presto_config_pb2.PrestoConnConfig(host='localhost', port=8080)
example_gen = PrestoExampleGen(presto_config, query='SELECT * FROM chicago_taxi_trips')

ExampleGen Downstream Bileşenleri

Aşağı akış bileşenleri için özel bölünmüş yapılandırma desteklenir.

İstatistikGen

Varsayılan davranış, tüm bölmeler için istatistik üretimi gerçekleştirmektir.

Herhangi bir bölmeyi hariç tutmak için, StatisticsGen bileşeni için exclude_splits ayarlayın. Örneğin:

# Exclude the 'eval' split.
statistics_gen = StatisticsGen(
             examples=example_gen.outputs['examples'],
             exclude_splits=['eval'])

ŞemaGen

Varsayılan davranış, tüm bölmelere dayalı bir şema oluşturmaktır.

Herhangi bir bölmeyi hariç tutmak için, SchemaGen bileşeni için exclude_splits ayarlayın. Örneğin:

# Exclude the 'eval' split.
schema_gen = SchemaGen(
             statistics=statistics_gen.outputs['statistics'],
             exclude_splits=['eval'])

Örnek Doğrulayıcı

Varsayılan davranış, bir şemaya karşı giriş örneklerindeki tüm bölünmelerin istatistiklerini doğrulamaktır.

Herhangi bir bölmeyi hariç tutmak için, exclude_splits bileşeni için Exclusion_splits'i ayarlayın. Örneğin:

# Exclude the 'eval' split.
example_validator = ExampleValidator(
             statistics=statistics_gen.outputs['statistics'],
             schema=schema_gen.outputs['schema'],
             exclude_splits=['eval'])

dönüştürmek

Varsayılan davranış, 'tren' bölünmesinden meta verileri analiz etmek ve üretmek ve tüm bölmeleri dönüştürmektir.

Analiz bölmelerini ve dönüştürme bölmelerini belirtmek için, Dönüştür bileşeni için splits_config ayarlayın. Örneğin:

# Analyze the 'train' split and transform all splits.
transform = Transform(
      examples=example_gen.outputs['examples'],
      schema=schema_gen.outputs['schema'],
      module_file=_taxi_module_file,
      splits_config=proto.SplitsConfig(analyze=['train'],
                                               transform=['train', 'eval']))

Eğitmen ve Tuner

Varsayılan davranış, 'tren' bölümünde tren ve 'değerlendirme' bölümünde değerlendirmedir.

Tren bölmelerini belirtmek ve bölmeleri değerlendirmek için Trainer bileşeni için train_args ve eval_args öğelerini ayarlayın. Örneğin:

# Train on the 'train' split and evaluate on the 'eval' split.
Trainer = Trainer(
      module_file=_taxi_module_file,
      examples=transform.outputs['transformed_examples'],
      schema=schema_gen.outputs['schema'],
      transform_graph=transform.outputs['transform_graph'],
      train_args=proto.TrainArgs(splits=['train'], num_steps=10000),
      eval_args=proto.EvalArgs(splits=['eval'], num_steps=5000))

Değerlendirici

Varsayılan davranış, 'değerlendirme' bölümünde hesaplanan metrikleri sağlamaktır.

Özel bölmelerdeki değerlendirme istatistiklerini hesaplamak için, Evaluator bileşeni için example_splits ayarlayın. Örneğin:

# Compute metrics on the 'eval1' split and the 'eval2' split.
evaluator = Evaluator(
      examples=example_gen.outputs['examples'],
      model=trainer.outputs['model'],
      example_splits=['eval1', 'eval2'])

CsvExampleGen API başvurusunda , FileBasedExampleGen API uygulamasında ve ImportExampleGen API başvurusunda daha fazla ayrıntı mevcuttur.