Yardım Kaggle üzerinde TensorFlow ile Büyük Bariyer Resifi korumak Meydan Üyelik

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üketir: Veri CSV gibi harici veri kaynaklarından TFRecord , Avro, parke ve BigQuery'ye.
  • Yayar: tf.Example kayıtları, tf.SequenceExample kayıtları veya proto biçimi, faydalı yük biçimine bağlı olarak değişebilir.

ÖrnekGen ve Diğer Bileşenler

ExampleGen faydalanmak bileşenlerine veri sağlar TensorFlow veri doğrulama gibi kütüphane, SchemaGen , StatisticsGen ve Örnek Doğrulayıcı'ya . Aynı zamanda veri sağlar Transform kullanımı kılan, Transform TensorFlow çıkarsama sırasında dağıtım hedeflere sonuçta kütüphane ve.

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:

Kaynak kodunda kullanım örneklerini ve bakın bu tartışmayı kullanmak ve özel vasiyetini nasıl geliştirileceği konusunda daha fazla bilgi için.

Buna ek olarak, bu veri kaynakları ve biçimleri olarak kullanılabilir özel bileşen örnekleri:

Apache Beam tarafından desteklenen veri biçimlerini alma

Bir veri sindirerek Apache Işın destekler veri kaynakları ve biçimleri geniş , ( aşağıya bakınız ). Bu özellikler mevcut bazı ExampleGen bileşenleri tarafından gösterilmiştir Tfx, için özel ExampleGen bileşenlerini oluşturmak için kullanılabilir ( aşağıya bakınız ).

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

Desteklenen (şu anda, CSV dosyaları ile TFRecord dosyaları veri kaynakları için tf.Example , tf.SequenceExample ve proto biçimi ve BigQuery sorgularının sonuçları) ExampleGen boru hattı bileşeni dağıtmak doğrudan kullanılan ve az özelleştirme gerektirir edilebilir. Örneğin:

example_gen = CsvExampleGen(input_base='data_root')

veya harici TFRecord ithalatı için aşağıdaki gibi tf.Example doğrudan:

example_gen = ImportExampleGen(input_base=path_to_tfrecord_dir)

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

Bir 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 fazla 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 irade çıkışı, set tren / eval bölünmüş oranını özelleştirmek için output_config ExampleGen bileşeni için. Ö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)

Nasıl Bildirimi hash_buckets bu örnekte kuruldu.

Set zaten yapılmış ayrık vardır bir giriş kaynağı için input_config ExampleGen bileşeni için:


# 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ı Örneğin gen (örneğin CsvExampleGen ve ImportExampleGen) için, pattern giriş taban yolunun tarafından verilen kök dizini ile giriş dosyalarına eşleştiren bir gıdım bile göreceli dosya kalıptır. Sorgu tabanlı örneğin gen (örn BigQueryExampleGen, PrestoExampleGen) için, pattern , bir SQL sorgusu.

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

Bakınız proto / example_gen.proto ExampleGen giriş ve çıkış bölünmüş yapılandırma için. Ve bakın mansap bileşenler rehber mansap özel böler kullanan için.

Bölme Yöntemi

Kullanırken hash_buckets bölme yöntemi, tamamı yerine kaydının bir örneği bölümlemek için bir kullanabilirsiniz. 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ölmeyi korumak 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.

Çıkış için örneklerde bir özellik göre tren / eval bölünmüş, set output_config ExampleGen bileşeni için. Ö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)

Nasıl Bildirimi partition_feature_name bu örnekte kuruldu.

açıklık

Açıklık '{SPAN}' içinde spec kullanılarak alınabilir giriş Glob modeli :

  • 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şler ve yayılma numarasını meta verilerde saklar.

Ö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şlenmek üzere '3' aralığını alacaktır. Aşağıda, yayılma özelliğini kullanmak için 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 tarihlerin doğrudan yayılma sayılarına eşlenmesini destekler. Tarihlerden aralıklara eşlemeyi temsil eden üç özellik vardır: {YYYY}, {MM} ve {DD}:

  • Üç özellikleri de tamamen mevcut olmalıdır giriş Glob deseni herhangi belirtilirse:
  • {SPAN} spesifikasyonu veya bu tarih spesifikasyonları grubu ö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 özelliklerini 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

Versiyon "{VERSION} spec kullanılarak alınabilir giriş Glob modeli :

  • 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şleyecek ve sürüm numarasını meta verilerde depolayacaktır.
  • 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 almak için set range_config bir dosya tabanlı ExampleGen bileşeni için. Ö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)

SPAN özelliği yerine tarih özelliği kullanılıyorsa, aralık yapılandırması 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 uygulamakla TF örneklere bir giriş CSV bölünme dönüşüm sağlar.

Yapılan Sonra, yukarıdaki uygulamakla ile bir bileşen oluşturmak CsvExampleGen bileşeni . 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))

Şimdi, biz de bu kullanarak Avro ve Parke dosyalarını okuma desteklemek yöntemi .

Ek Veri Formatları

Apache Işın bir dizi okuma destekler ek veri formatları . Işın G/Ç Dönüşümleri aracılığıyla. Sen benzer bir yapıyı kullanarak Işın I / O dönüşümleri yararlanarak özel ExampleGen bileşenleri oluşturabilir Avro örnek

  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

Kontrol Işın docs son liste için.

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 infaz bağlantı yapılandırma ayrıntıları soyutlar bağlayıcı beam.io varsayılan kullanarak okur. Presto infaz , özel bir yaygı PTransform ve gerektiren özel bir bağlantı yapılandırması protobuf girdi olarak kullanılmaktadır.

Ö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 böler dışlamak için, set exclude_splits StatisticsGen bileşeni için. Ö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 böler dışlamak için, set exclude_splits SchemaGen bileşeni için. Ö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 böler dışlamak için, set exclude_splits ExampleValidator bileşeni için. Ö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.

Bölmelerini analiz ve böler dönüşümü belirtmek için, set splits_config bileşeni Transform için. Ö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öler belirtmek ve bölünmeler değerlendirmek, set train_args ve eval_args Eğitmen bileşeni için. Ö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öler bir değerlendirme istatistiklerini hesaplamak için, set example_splits Değerlendirici bileşeni için. Örneğin:

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

Daha fazla detay mevcuttur CsvExampleGen API başvurusu , FileBasedExampleGen API başvurusu ve ImportExampleGen API başvurusu .