এস্টিমেটর থেকে কেরাস এপিআইগুলিতে স্থানান্তর করুন

TensorFlow.org-এ দেখুন Google Colab-এ চালান GitHub-এ উৎস দেখুন নোটবুক ডাউনলোড করুন

TensorFlow 1-এর tf.estimator.Estimator API থেকে TensorFlow 2-এর tf.keras API-এ কীভাবে স্থানান্তর করা যায় এই নির্দেশিকাটি দেখায়। প্রথমে, আপনি tf.estimator.Estimator সাথে প্রশিক্ষণ এবং মূল্যায়নের জন্য একটি মৌলিক মডেল সেট আপ করবেন এবং চালাবেন। তারপর, আপনি tf.keras API-এর সাথে TensorFlow 2-এ সমতুল্য পদক্ষেপগুলি সম্পাদন করবেন। এছাড়াও আপনি tf.keras.Model tf.GradientTape করে প্রশিক্ষণের ধাপটি কাস্টমাইজ করতে শিখবেন।

  • TensorFlow 1-এ, উচ্চ-স্তরের tf.estimator.Estimator APIগুলি আপনাকে একটি মডেলকে প্রশিক্ষণ ও মূল্যায়ন করতে দেয়, সেইসাথে অনুমান সম্পাদন করতে এবং আপনার মডেল (পরিষেবার জন্য) সংরক্ষণ করতে দেয়।
  • TensorFlow 2-এ, উপরে উল্লিখিত কাজগুলি যেমন মডেল বিল্ডিং , গ্রেডিয়েন্ট অ্যাপ্লিকেশান, প্রশিক্ষণ , মূল্যায়ন এবং ভবিষ্যদ্বাণী করার জন্য Keras API ব্যবহার করুন।

(টেন্সরফ্লো 2-এ মডেল/চেকপয়েন্ট সেভিং ওয়ার্কফ্লো মাইগ্রেট করার জন্য, সেভডমডেল এবং চেকপয়েন্ট মাইগ্রেশন গাইড দেখুন।)

সেটআপ

আমদানি এবং একটি সাধারণ ডেটাসেট দিয়ে শুরু করুন:

import tensorflow as tf
import tensorflow.compat.v1 as tf1
features = [[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 দিয়ে প্রশিক্ষণ দিন এবং মূল্যায়ন করুন

TensorFlow 1-এ tf.estimator.Estimator এর সাহায্যে কীভাবে প্রশিক্ষণ এবং মূল্যায়ন করতে হয় এই উদাহরণটি দেখায়।

কয়েকটি ফাংশন সংজ্ঞায়িত করে শুরু করুন: প্রশিক্ষণ ডেটার জন্য একটি ইনপুট ফাংশন, মূল্যায়ন ডেটার জন্য একটি মূল্যায়ন ইনপুট ফাংশন, এবং একটি মডেল ফাংশন যা অনুমানকারীকে বলে যে প্রশিক্ষণ Estimator বৈশিষ্ট্য এবং লেবেলগুলির সাথে কীভাবে সংজ্ঞায়িত করা হয়েছে:

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 ইনস্ট্যান্টিয়েট করুন এবং মডেলটিকে প্রশিক্ষণ দিন:

estimator = tf1.estimator.Estimator(model_fn=_model_fn)
estimator.train(_input_fn)
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>

মূল্যায়ন সেট দিয়ে প্রোগ্রামটি মূল্যায়ন করুন:

estimator.evaluate(_eval_input_fn)
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}

টেনসরফ্লো 2: অন্তর্নির্মিত কেরাস পদ্ধতিগুলির সাথে প্রশিক্ষণ এবং মূল্যায়ন করুন

TensorFlow 2-এ Keras Model.fit এবং Model.evaluate এর সাহায্যে কীভাবে প্রশিক্ষণ ও মূল্যায়ন করতে হয়, এই উদাহরণটি দেখায়।

  • tf.data.Dataset APIs দিয়ে ডেটাসেট পাইপলাইন প্রস্তুত করে শুরু করুন।
  • একটি রৈখিক ( tf.keras.layers.Dense ) স্তর সহ একটি সাধারণ কেরাস অনুক্রমিক মডেল সংজ্ঞায়িত করুন।
  • একটি অ্যাডাগ্রাড অপ্টিমাইজার ইনস্ট্যান্টিয়েট করুন ( tf.keras.optimizers.Adagrad )।
  • Model.compile-এ optimizer ভেরিয়েবল এবং গড়-বর্গীয় ত্রুটি ( "mse" Model.compile " ) ক্ষতি পাস করে প্রশিক্ষণের জন্য মডেলটি কনফিগার করুন।
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")

এর সাথে, আপনি Model.fit কল করে মডেলকে প্রশিক্ষণ দিতে প্রস্তুত:

model.fit(dataset)
3/3 [==============================] - 0s 2ms/step - loss: 0.2785
<keras.callbacks.History at 0x7fbc4b320350>

অবশেষে, Model.evaluate দিয়ে মডেলটি মূল্যায়ন করুন:

model.evaluate(eval_dataset, return_dict=True)
3/3 [==============================] - 0s 1ms/step - loss: 0.0451
{'loss': 0.04510306194424629}

টেনসরফ্লো 2: একটি কাস্টম প্রশিক্ষণ পদক্ষেপ এবং অন্তর্নির্মিত কেরাস পদ্ধতিগুলির সাথে প্রশিক্ষণ এবং মূল্যায়ন করুন

TensorFlow 2-এ, আপনি tf.GradientTape সাহায্যে আপনার নিজস্ব কাস্টম ট্রেনিং স্টেপ ফাংশনও লিখতে পারেন ফরোয়ার্ড এবং পিছন দিকে পাস করার জন্য, এখনও অন্তর্নির্মিত প্রশিক্ষণ সহায়তার সুবিধা গ্রহণ করার সময়, যেমন tf.keras.callbacks.Callback এবং tf.distribute.Strategy ( Model.fit-এ কাস্টমাইজ করা এবং স্ক্র্যাচ থেকে কাস্টম প্রশিক্ষণ লুপ লেখার বিষয়ে আরও জানুন।)

এই উদাহরণে, সাবক্লাসিং tf.keras.Sequential যা Model.train_step ওভাররাইড করে একটি কাস্টম tf.keras.Model তৈরি করে শুরু করুন। ( tf.keras.Model সাবক্লাসিং সম্পর্কে আরও জানুন)। সেই ক্লাসের ভিতরে, একটি কাস্টম train_step ফাংশন সংজ্ঞায়িত করুন যা প্রতিটি ব্যাচের ডেটার জন্য একটি প্রশিক্ষণ ধাপের সময় একটি ফরোয়ার্ড পাস এবং ব্যাকওয়ার্ড পাস সম্পাদন করে।

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}

পরবর্তী, আগের মত:

  • tf.data.Dataset দিয়ে ডেটাসেট পাইপলাইন প্রস্তুত করুন।
  • একটি tf.keras.layers.Dense স্তর সহ একটি সাধারণ মডেল সংজ্ঞায়িত করুন।
  • ইনস্ট্যান্টিয়েট অ্যাডাগ্রাড ( tf.keras.optimizers.Adagrad )
  • Model.compile দিয়ে প্রশিক্ষণের জন্য মডেলটি কনফিগার করুন, লস ফাংশন হিসাবে গড়-বর্গীয় ত্রুটি ( "mse" ) ব্যবহার করার সময়।
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")

মডেলকে প্রশিক্ষণ দিতে Model.fit কল করুন:

model.fit(dataset)
3/3 [==============================] - 0s 2ms/step - loss: 0.0587
<keras.callbacks.History at 0x7fbc3873f1d0>

এবং, অবশেষে, Model.evaluate দিয়ে প্রোগ্রামটি মূল্যায়ন করুন:

model.evaluate(eval_dataset, return_dict=True)
3/3 [==============================] - 0s 2ms/step - loss: 0.0197
{'loss': 0.019738242030143738}

পরবর্তী পদক্ষেপ

অতিরিক্ত কেরাস রিসোর্স আপনার কাজে লাগতে পারে:

নিম্নলিখিত নির্দেশিকাগুলি tf.estimator API থেকে বন্টন কৌশল কর্মপ্রবাহ স্থানান্তর করতে সহায়তা করতে পারে: