TensorFlow.org'da görüntüleyin |   Google Colab'da çalıştırın |   Kaynağı GitHub'da görüntüleyin |   Not defterini indir | 
 Bu kılavuz, TensorFlow 1'in tf.estimator.Estimator API'lerinden TensorFlow 2'nin tf.keras API'lerine nasıl geçiş yapılacağını gösterir. İlk olarak, tf.estimator.Estimator ile eğitim ve değerlendirme için temel bir model kuracak ve çalıştıracaksınız. Ardından TensorFlow 2'deki eşdeğer adımları tf.keras API'leri ile gerçekleştireceksiniz. Ayrıca, tf.keras.Model alt sınıfını oluşturarak ve tf.keras.Model kullanarak eğitim adımını nasıl özelleştireceğinizi tf.GradientTape .
-  TensorFlow 1'de, üst düzey 
tf.estimator.EstimatorAPI'leri, bir modeli eğitmenize ve değerlendirmenize, ayrıca çıkarım yapmanıza ve modelinizi kaydetmenize (sunma için) izin verir. - TensorFlow 2'de, model oluşturma , gradyan uygulaması, eğitim , değerlendirme ve tahmin gibi yukarıda belirtilen görevleri gerçekleştirmek için Keras API'lerini kullanın.
 
(Model/kontrol noktası kaydetme iş akışlarını TensorFlow 2'ye geçirmek için SavedModel ve Checkpoint geçiş kılavuzlarına bakın.)
Kurmak
İçe aktarma ve basit bir veri kümesiyle başlayın:
import tensorflow as tf
import tensorflow.compat.v1 as tf1
tutucu1 l10n-yerfeatures = [[1., 1.5], [2., 2.5], [3., 3.5]]
labels = [[0.3], [0.5], [0.7]]
eval_features = [[4., 4.5], [5., 5.5], [6., 6.5]]
eval_labels = [[0.8], [0.9], [1.]]
TensorFlow 1: tf.estimator.Estimator ile eğitin ve değerlendirin
 Bu örnek, tf.estimator.Estimator 1'de tf.estimator.Estimator ile eğitim ve değerlendirmenin nasıl gerçekleştirileceğini gösterir.
 Birkaç işlev tanımlayarak başlayın: eğitim verileri için bir giriş işlevi, değerlendirme verileri için bir değerlendirme giriş işlevi ve Estimator eğitim işleminin özellikler ve etiketlerle nasıl tanımlandığını söyleyen bir model işlevi:
def _input_fn():
  return tf1.data.Dataset.from_tensor_slices((features, labels)).batch(1)
def _eval_input_fn():
  return tf1.data.Dataset.from_tensor_slices(
      (eval_features, eval_labels)).batch(1)
def _model_fn(features, labels, mode):
  logits = tf1.layers.Dense(1)(features)
  loss = tf1.losses.mean_squared_error(labels=labels, predictions=logits)
  optimizer = tf1.train.AdagradOptimizer(0.05)
  train_op = optimizer.minimize(loss, global_step=tf1.train.get_global_step())
  return tf1.estimator.EstimatorSpec(mode, loss=loss, train_op=train_op)
 Estimator somutlaştırın ve modeli eğitin:
estimator = tf1.estimator.Estimator(model_fn=_model_fn)
estimator.train(_input_fn)
tutucu4 l10n-yer
INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpeovq622_
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpeovq622_', '_tf_random_seed': None, '_save_summary_steps': 100, '_save_checkpoints_steps': None, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: true
graph_options {
  rewrite_options {
    meta_optimizer_iterations: ONE
  }
}
, '_keep_checkpoint_max': 5, '_keep_checkpoint_every_n_hours': 10000, '_log_step_count_steps': 100, '_train_distribute': None, '_device_fn': None, '_protocol': None, '_eval_distribute': None, '_experimental_distribute': None, '_experimental_max_worker_delay_secs': None, '_session_creation_timeout_secs': 7200, '_checkpoint_save_graph_def': True, '_service': None, '_cluster_spec': ClusterSpec({}), '_task_type': 'worker', '_task_id': 0, '_global_id_in_cluster': 0, '_master': '', '_evaluation_master': '', '_is_chief': True, '_num_ps_replicas': 0, '_num_worker_replicas': 1}
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/training/training_util.py:236: Variable.initialized_value (from tensorflow.python.ops.variables) is deprecated and will be removed in a future version.
Instructions for updating:
Use Variable.read_value. Variables in 2.X are initialized automatically both in eager and graph (inside tf.defun) contexts.
INFO:tensorflow:Calling model_fn.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/training/adagrad.py:77: calling Constant.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.
Instructions for updating:
Call initializer instance with the dtype argument instead of passing it to the constructor
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpeovq622_/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 2.0834494, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 3...
INFO:tensorflow:Saving checkpoints for 3 into /tmp/tmpeovq622_/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 3...
INFO:tensorflow:Loss for final step: 9.88002.
<tensorflow_estimator.python.estimator.estimator.Estimator at 0x7fbd06673350>
Programı değerlendirme seti ile değerlendirin:
estimator.evaluate(_eval_input_fn)
tutucu6 l10n-yer
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2021-10-26T01:32:58
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpeovq622_/model.ckpt-3
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Inference Time : 0.10194s
INFO:tensorflow:Finished evaluation at 2021-10-26-01:32:58
INFO:tensorflow:Saving dict for global step 3: global_step = 3, loss = 20.543152
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 3: /tmp/tmpeovq622_/model.ckpt-3
{'loss': 20.543152, 'global_step': 3}
TensorFlow 2: Yerleşik Keras yöntemleriyle eğitin ve değerlendirin
 Bu örnek, TensorFlow 2'de Keras Model.fit ve Model.evaluate ile eğitim ve değerlendirmenin nasıl gerçekleştirileceğini gösterir. (Yerleşik yöntemler kılavuzuyla Eğitim ve değerlendirme bölümünde daha fazla bilgi edinebilirsiniz.)
-  
tf.data.DatasetAPI'leri ile veri kümesi ardışık düzenini hazırlayarak başlayın. -  Bir doğrusal ( 
tf.keras.layers.Dense) katmana sahip basit bir Keras Sıralı modeli tanımlayın. -  Bir Adagrad iyileştiricisi örneği oluşturun ( 
tf.keras.optimizers.Adagrad). -  
optimizeredici değişkeni ve ortalama kare hatası ("mse") kaybınıModel.compilegeçirerek modeli eğitim için yapılandırın. 
dataset = tf.data.Dataset.from_tensor_slices((features, labels)).batch(1)
eval_dataset = tf.data.Dataset.from_tensor_slices(
      (eval_features, eval_labels)).batch(1)
model = tf.keras.models.Sequential([tf.keras.layers.Dense(1)])
optimizer = tf.keras.optimizers.Adagrad(learning_rate=0.05)
model.compile(optimizer=optimizer, loss="mse")
 Bununla, Model.fit arayarak modeli eğitmeye hazırsınız:
model.fit(dataset)
tutucu9 l10n-yer3/3 [==============================] - 0s 2ms/step - loss: 0.2785 <keras.callbacks.History at 0x7fbc4b320350>
 Son olarak, Model.evaluate ile modeli değerlendirin:
model.evaluate(eval_dataset, return_dict=True)
tutucu11 l10n-yer
3/3 [==============================] - 0s 1ms/step - loss: 0.0451
{'loss': 0.04510306194424629}
TensorFlow 2: Özel bir eğitim adımı ve yerleşik Keras yöntemleriyle eğitin ve değerlendirin
 TensorFlow 2'de, tf.keras.callbacks.Callback ve tf.distribute.Strategy gibi yerleşik eğitim desteğinden yararlanmaya devam ederken ileri ve geri geçişler gerçekleştirmek için tf.GradientTape ile kendi özel eğitim adımı işlevinizi de yazabilirsiniz. tf.distribute.Strategy . ( Model.fit'te olanları Özelleştirme ve Sıfırdan özel eğitim döngüleri yazma konusunda daha fazla bilgi edinin.)
 Bu örnekte, Model.train_step öğesini geçersiz kılan tf.keras.Sequential öğesini alt sınıflandırarak özel bir tf.keras.Model oluşturarak Model.train_step . ( tf.keras.Model alt sınıflandırması hakkında daha fazla bilgi edinin). Bu sınıfın içinde, her veri grubu için bir eğitim adımı sırasında bir ileri geçiş ve geri geçiş gerçekleştiren özel bir train_step işlevi tanımlayın.
class CustomModel(tf.keras.Sequential):
  """A custom sequential model that overrides `Model.train_step`."""
  def train_step(self, data):
    batch_data, labels = data
    with tf.GradientTape() as tape:
      predictions = self(batch_data, training=True)
      # Compute the loss value (the loss function is configured
      # in `Model.compile`).
      loss = self.compiled_loss(labels, predictions)
    # Compute the gradients of the parameters with respect to the loss.
    gradients = tape.gradient(loss, self.trainable_variables)
    # Perform gradient descent by updating the weights/parameters.
    self.optimizer.apply_gradients(zip(gradients, self.trainable_variables))
    # Update the metrics (includes the metric that tracks the loss).
    self.compiled_metrics.update_state(labels, predictions)
    # Return a dict mapping metric names to the current values.
    return {m.name: m.result() for m in self.metrics}
Sonra, daha önce olduğu gibi:
-  Veri kümesi ardışık 
tf.data.Datasetile hazırlayın. -  Tek bir 
tf.keras.layers.Densekatmanıyla basit bir model tanımlayın. -  Örnek Adagrad ( 
tf.keras.optimizers.Adagrad) -  Modeli, kayıp işlevi olarak ortalama kare hatası ( 
"mse") kullanırkenModel.compileile eğitim için yapılandırın. 
dataset = tf.data.Dataset.from_tensor_slices((features, labels)).batch(1)
eval_dataset = tf.data.Dataset.from_tensor_slices(
      (eval_features, eval_labels)).batch(1)
model = CustomModel([tf.keras.layers.Dense(1)])
optimizer = tf.keras.optimizers.Adagrad(learning_rate=0.05)
model.compile(optimizer=optimizer, loss="mse")
 Modeli eğitmek için Model.fit arayın:
model.fit(dataset)
tutucu15 l10n-yer3/3 [==============================] - 0s 2ms/step - loss: 0.0587 <keras.callbacks.History at 0x7fbc3873f1d0>
 Ve son olarak, programı Model.evaluate ile değerlendirin:
model.evaluate(eval_dataset, return_dict=True)
tutucu17 l10n-yer
3/3 [==============================] - 0s 2ms/step - loss: 0.0197
{'loss': 0.019738242030143738}
Sonraki adımlar
Yararlı bulabileceğiniz ek Keras kaynakları:
- Kılavuz: Yerleşik yöntemlerle eğitim ve değerlendirme
 - Kılavuz: Model.fit'te olanları özelleştirin
 - Kılavuz: Sıfırdan bir eğitim döngüsü yazma
 - Kılavuz: Alt sınıflama yoluyla yeni Keras katmanları ve modelleri oluşturma
 
 Aşağıdaki kılavuzlar, dağıtım stratejisi iş akışlarının tf.estimator API'lerinden taşınmasına yardımcı olabilir:
TensorFlow.org'da görüntüleyin
Google Colab'da çalıştırın
Kaynağı GitHub'da görüntüleyin
Not defterini indir