তারিখটা মনে রেখো! গুগল I / O মে 18-20 মে এখনই রেজিস্টার করুন
This page was translated by the Cloud Translation API.
Switch to English

অনুমানকারী

টেনসরফ্লো.অর্গ.এ দেখুন গুগল কোলাবে চালান গিটহাবের উত্স দেখুন নোটবুক ডাউনলোড করুন

এই দস্তাবেজটি tf.estimator - একটি উচ্চ-স্তরের টেনসরফ্লো এপিআই প্রবর্তন করে। অনুমানকারীরা নিম্নলিখিত ক্রিয়াকলাপগুলি আবদ্ধ করে:

  • প্রশিক্ষণ
  • মূল্যায়ন
  • ভবিষ্যদ্বাণী
  • পরিবেশনের জন্য রফতানি

টেনসরফ্লো বেশ কয়েকটি প্রাক-তৈরি Estimators প্রয়োগ করে। কাস্টম অনুমানকারীগুলি এখনও সমর্থিত হয় তবে মূলত পিছনের সামঞ্জস্যতা পরিমাপ হিসাবে। নতুন কোডের জন্য কাস্টম অনুমানকারী ব্যবহার করা উচিত নয় । সমস্ত প্রাক্কলনকারী — প্রাক-তৈরি বা কাস্টম বেশী tf.estimator.Estimator শ্রেণির উপর ভিত্তি করে ক্লাস।

দ্রুত উদাহরণের জন্য, অনুমানের টিউটোরিয়াল ব্যবহার করে দেখুন । এপিআই ডিজাইনের একটি সংক্ষিপ্তসার জন্য, সাদা কাগজ পরীক্ষা করুন।

সেটআপ

pip install -q -U tensorflow_datasets
import tempfile
import os

import tensorflow as tf
import tensorflow_datasets as tfds

সুবিধাদি

একটি tf.keras.Model অনুরূপ, একটি estimator একটি মডেল স্তরের বিমূর্ততা। tf.estimator কিছু সক্ষমতা সরবরাহ করে যা বর্তমানে tf.keras জন্য tf.keras । এইগুলো:

  • প্যারামিটার সার্ভার ভিত্তিক প্রশিক্ষণ
  • সম্পূর্ণ টিএফএক্স ইন্টিগ্রেশন

অনুমানক ক্ষমতা

অনুমানকারীরা নিম্নলিখিত সুবিধা প্রদান করে:

  • আপনি স্থানীয় হোস্টে বা বিতরণ করা বহু-সার্ভার পরিবেশে আপনার মডেলটি পরিবর্তন না করেই অনুমান ভিত্তিক মডেলগুলি চালাতে পারেন। তদুপরি, আপনি সিপিইউ, জিপিইউ, বা টিপিইউতে আপনার মডেলটি পুনরায় ব্যয় না করে Estimator- ভিত্তিক মডেলগুলি চালাতে পারেন।
  • অনুমানকারীরা একটি নিরাপদ বিতরণ প্রশিক্ষণ লুপ সরবরাহ করে যা কখন এবং কখন:
    • লোড তথ্য
    • ব্যতিক্রমগুলি পরিচালনা করুন
    • চেকপয়েন্ট ফাইল তৈরি করুন এবং ব্যর্থতা থেকে পুনরুদ্ধার করুন
    • টেনসরবোর্ডের জন্য সংক্ষিপ্তসারগুলি সংরক্ষণ করুন

অনুমানকারীদের সাথে একটি অ্যাপ্লিকেশন লেখার সময়, আপনাকে অবশ্যই মডেল থেকে ডেটা ইনপুট পাইপলাইন আলাদা করতে হবে। এই বিচ্ছেদটি বিভিন্ন ডেটাসেটের সাথে পরীক্ষাগুলি সহজ করে l

প্রাক-তৈরি অনুমান ব্যবহার করে

প্রাক-তৈরি অনুমানকগুলি আপনাকে বেস টেনসরফ্লো এপিআইগুলির তুলনায় অনেক বেশি ধারণাগত স্তরে কাজ করতে সক্ষম করে। হিসাবরক্ষণকারীরা আপনার জন্য সমস্ত "নদীর গভীরতানির্ণয়" পরিচালনা করে তাই আপনাকে আর কম্পিউটেশনাল গ্রাফ বা সেশন তৈরির বিষয়ে চিন্তা করতে হবে না। তদ্ব্যতীত, প্রাক-তৈরি অনুমানকারীরা আপনাকে কেবলমাত্র ন্যূনতম কোড পরিবর্তন করে বিভিন্ন মডেল আর্কিটেকচারের সাথে পরীক্ষা করতে দেয়। উদাহরণস্বরূপ, tf.estimator.DNNClassifier , একটি প্রাক-তৈরি Estimator শ্রেণি যা ঘন, ফিড-ফরোয়ার্ড নিউরাল নেটওয়ার্কগুলির উপর ভিত্তি করে শ্রেণিবদ্ধকরণ মডেলগুলি প্রশিক্ষণ দেয়।

একটি প্রাক-তৈরি Estimator উপর নির্ভর একটি টেনসরফ্লো প্রোগ্রাম সাধারণত নিম্নলিখিত চারটি পদক্ষেপ নিয়ে গঠিত:

1. একটি ইনপুট ফাংশন লিখুন

উদাহরণস্বরূপ, আপনি প্রশিক্ষণ সেট আমদানি করার জন্য একটি ফাংশন এবং পরীক্ষা সেটটি আমদানি করার জন্য অন্য একটি ফাংশন তৈরি করতে পারেন। অনুমানকারীরা আশা করেন যে তাদের ইনপুটগুলি বস্তুর জুড়ি হিসাবে ফর্ম্যাট করা হবে:

  • একটি অভিধান যা কীগুলি বৈশিষ্ট্যর নাম এবং মানগুলি হ'ল সংযুক্ত বৈশিষ্ট্যযুক্ত ডেটা সহ টেনার্স (বা স্পার্সটেন্সর) are
  • এক বা একাধিক লেবেলযুক্ত একটি টেনসর

tf.data.Dataset এমন একটিtf.data.Dataset ফিরিয়ে input_fn উচিতtf.data.Dataset যা সেই ফর্ম্যাটে জোড়া দেয়।

উদাহরণস্বরূপ, নীচের কোডটি টাইটানিক ডেটাসেটের train.csv ফাইল থেকে একটিtf.data.Dataset তৈরি করে:

def train_input_fn():
  titanic_file = tf.keras.utils.get_file("train.csv", "https://storage.googleapis.com/tf-datasets/titanic/train.csv")
  titanic = tf.data.experimental.make_csv_dataset(
      titanic_file, batch_size=32,
      label_name="survived")
  titanic_batches = (
      titanic.cache().repeat().shuffle(500)
      .prefetch(tf.data.AUTOTUNE))
  return titanic_batches

input_fn একটি tf.Graph এক্সিকিউট করা হয় এবং tf.Graph একটি (features_dics, labels) জুড়ি সরাসরি ফিরতে পারে তবে tf.Graph মতো সাধারণ ক্ষেত্রে এর বাইরে এটি ত্রুটিযুক্ত।

২. বৈশিষ্ট্য কলামগুলি সংজ্ঞায়িত করুন।

প্রতিটি tf.feature_column একটি বৈশিষ্ট্যের নাম, এর ধরণ এবং কোনও ইনপুট প্রাক প্রসেসিং সনাক্ত করে।

উদাহরণস্বরূপ, নিম্নলিখিত স্নিপেট তিনটি বৈশিষ্ট্য কলাম তৈরি করে।

  • প্রথমটি age বৈশিষ্ট্যটি সরাসরি ভাসমান-পয়েন্ট ইনপুট হিসাবে ব্যবহার করে।
  • দ্বিতীয় শ্রেণিবদ্ধ ইনপুট হিসাবে class বৈশিষ্ট্যটি ব্যবহার করে।
  • তৃতীয়টি embark_town একটি শ্রেণিবদ্ধ ইনপুট হিসাবে ব্যবহার করে, তবে বিকল্পগুলি গণনা করার প্রয়োজনীয়তা এবং বিকল্পগুলির সংখ্যা নির্ধারণের জন্য hashing trick ব্যবহার করে।

আরও তথ্যের জন্য, বৈশিষ্ট্য কলাম টিউটোরিয়াল পরীক্ষা করুন।

age = tf.feature_column.numeric_column('age')
cls = tf.feature_column.categorical_column_with_vocabulary_list('class', ['First', 'Second', 'Third']) 
embark = tf.feature_column.categorical_column_with_hash_bucket('embark_town', 32)

৩. প্রাসঙ্গিক প্রাক-তৈরি অনুমান ইনস্ট্যান্ট করুন।

উদাহরণস্বরূপ, এখানে LinearClassifier নামের প্রাক-তৈরি LinearClassifier একটি নমুনা ইনস্ট্যান্টেশন রয়েছে:

model_dir = tempfile.mkdtemp()
model = tf.estimator.LinearClassifier(
    model_dir=model_dir,
    feature_columns=[embark, cls, age],
    n_classes=2
)
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpu27sw9ie', '_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}

আরও তথ্যের জন্য, আপনি লিনিয়ার শ্রেণিবদ্ধ টিউটোরিয়াল যেতে পারেন।

4. একটি প্রশিক্ষণ, মূল্যায়ন, বা অনুমান পদ্ধতি কল করুন।

সমস্ত অনুমানকারী train প্রদান, evaluate এবং পদ্ধতি predict

model = model.train(input_fn=train_input_fn, steps=100)
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/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.
Downloading data from https://storage.googleapis.com/tf-datasets/titanic/train.csv
32768/30874 [===============================] - 0s 0us/step
INFO:tensorflow:Calling model_fn.
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer_v1.py:1727: UserWarning: `layer.add_variable` is deprecated and will be removed in a future version. Please use `layer.add_weight` method instead.
  warnings.warn('`layer.add_variable` is deprecated and '
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/optimizer_v2/ftrl.py:134: 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/tmpu27sw9ie/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 0.6931472, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 100...
INFO:tensorflow:Saving checkpoints for 100 into /tmp/tmpu27sw9ie/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 100...
INFO:tensorflow:Loss for final step: 0.62258995.
result = model.evaluate(train_input_fn, steps=10)

for key, value in result.items():
  print(key, ":", value)
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2021-01-08T02:56:30Z
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpu27sw9ie/model.ckpt-100
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Evaluation [1/10]
INFO:tensorflow:Evaluation [2/10]
INFO:tensorflow:Evaluation [3/10]
INFO:tensorflow:Evaluation [4/10]
INFO:tensorflow:Evaluation [5/10]
INFO:tensorflow:Evaluation [6/10]
INFO:tensorflow:Evaluation [7/10]
INFO:tensorflow:Evaluation [8/10]
INFO:tensorflow:Evaluation [9/10]
INFO:tensorflow:Evaluation [10/10]
INFO:tensorflow:Inference Time : 0.67613s
INFO:tensorflow:Finished evaluation at 2021-01-08-02:56:31
INFO:tensorflow:Saving dict for global step 100: accuracy = 0.715625, accuracy_baseline = 0.60625, auc = 0.7403657, auc_precision_recall = 0.6804854, average_loss = 0.5836128, global_step = 100, label/mean = 0.39375, loss = 0.5836128, precision = 0.739726, prediction/mean = 0.34897345, recall = 0.42857143
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 100: /tmp/tmpu27sw9ie/model.ckpt-100
accuracy : 0.715625
accuracy_baseline : 0.60625
auc : 0.7403657
auc_precision_recall : 0.6804854
average_loss : 0.5836128
label/mean : 0.39375
loss : 0.5836128
precision : 0.739726
prediction/mean : 0.34897345
recall : 0.42857143
global_step : 100
for pred in model.predict(train_input_fn):
  for key, value in pred.items():
    print(key, ":", value)
  break
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpu27sw9ie/model.ckpt-100
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
logits : [-0.73942876]
logistic : [0.32312906]
probabilities : [0.6768709 0.3231291]
class_ids : [0]
classes : [b'0']
all_class_ids : [0 1]
all_classes : [b'0' b'1']

প্রাক-তৈরি অনুমানের সুবিধা

প্রাক-তৈরি প্রাক্কলনকারীরা নীচের সুবিধাগুলি সরবরাহ করে সেরা অনুশীলনগুলিকে এনকোড করে:

  • কম্পিউটারের গ্রাফের বিভিন্ন অংশ কোথায় চালানো উচিত তা নির্ধারণের জন্য সর্বোত্তম অনুশীলনগুলি, একটি একক মেশিনে বা একটি ক্লাস্টারে কৌশল প্রয়োগ করে।
  • ইভেন্ট (সংক্ষিপ্ত) লেখার জন্য এবং সর্বজনীন দরকারী সংক্ষিপ্তসারগুলির জন্য সেরা অনুশীলন।

আপনি যদি প্রাক-তৈরি অনুমান ব্যবহার না করেন তবে আপনাকে অবশ্যই পূর্ববর্তী বৈশিষ্ট্যগুলি প্রয়োগ করতে হবে।

কাস্টম অনুমানকারী

প্রতিটি প্রাক্কলনের হৃদয় - প্রাক-তৈরি বা কাস্টম model_fn হোক না কেন - এর মডেল ফাংশন , model_fn , এটি এমন একটি পদ্ধতি যা প্রশিক্ষণ, মূল্যায়ন এবং ভবিষ্যদ্বাণী সম্পর্কিত গ্রাফ তৈরি করে। আপনি যখন প্রাক-তৈরি অনুমান ব্যবহার করছেন, অন্য কেউ ইতিমধ্যে মডেল ফাংশনটি প্রয়োগ করেছেন। একটি কাস্টম অনুমানের উপর নির্ভর করার সময়, আপনাকে নিজেরাই মডেল ফাংশনটি লিখতে হবে।

কেরাস মডেল থেকে একটি অনুমানক তৈরি করুন

আপনি বিদ্যমান কেরাস মডেলগুলিকে tf.keras.estimator.model_to_estimator দিয়ে tf.keras.estimator.model_to_estimator রূপান্তর করতে পারেন। আপনি যদি আপনার মডেল কোডটি আধুনিকীকরণ করতে চান তবে এটি সহায়ক তবে আপনার প্রশিক্ষণ পাইপলাইনে এখনও অনুমানকারী প্রয়োজন।

একটি কেরাস মোবাইল নেট ভি 2 মডেল ইনস্ট্যান্ট করুন এবং প্রশিক্ষণ দেওয়ার জন্য অপটিমাইজার, ক্ষতি এবং মেট্রিক সহ মডেলটি সংকলন করুন:

keras_mobilenet_v2 = tf.keras.applications.MobileNetV2(
    input_shape=(160, 160, 3), include_top=False)
keras_mobilenet_v2.trainable = False

estimator_model = tf.keras.Sequential([
    keras_mobilenet_v2,
    tf.keras.layers.GlobalAveragePooling2D(),
    tf.keras.layers.Dense(1)
])

# Compile the model
estimator_model.compile(
    optimizer='adam',
    loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
    metrics=['accuracy'])
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/mobilenet_v2/mobilenet_v2_weights_tf_dim_ordering_tf_kernels_1.0_160_no_top.h5
9412608/9406464 [==============================] - 0s 0us/step

সংকলিত কেরাস মডেল থেকে একটি Estimator তৈরি করুন। Keras মডেল প্রাথমিক মডেল রাষ্ট্র নির্মিত সংরক্ষিত হয় Estimator :

est_mobilenet_v2 = tf.keras.estimator.model_to_estimator(keras_model=estimator_model)
INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpeaonpwe8
INFO:tensorflow:Using the Keras model provided.
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/backend.py:434: UserWarning: `tf.keras.backend.set_learning_phase` is deprecated and will be removed after 2020-10-11. To update it, simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
  warnings.warn('`tf.keras.backend.set_learning_phase` is deprecated and '
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpeaonpwe8', '_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}

অন্য যে কোনও Estimator সাথে যেমন হয়েছিল তেমন প্রাপ্ত Estimator তার আচরণ করুন।

IMG_SIZE = 160  # All images will be resized to 160x160

def preprocess(image, label):
  image = tf.cast(image, tf.float32)
  image = (image/127.5) - 1
  image = tf.image.resize(image, (IMG_SIZE, IMG_SIZE))
  return image, label
def train_input_fn(batch_size):
  data = tfds.load('cats_vs_dogs', as_supervised=True)
  train_data = data['train']
  train_data = train_data.map(preprocess).shuffle(500).batch(batch_size)
  return train_data

প্রশিক্ষণের জন্য, অনুমানের ট্রেন ফাংশনটিতে কল করুন:

est_mobilenet_v2.train(input_fn=lambda: train_input_fn(32), steps=50)
Downloading and preparing dataset 786.68 MiB (download: 786.68 MiB, generated: Unknown size, total: 786.68 MiB) to /home/kbuilder/tensorflow_datasets/cats_vs_dogs/4.0.0...
WARNING:absl:1738 images were corrupted and were skipped
Dataset cats_vs_dogs downloaded and prepared to /home/kbuilder/tensorflow_datasets/cats_vs_dogs/4.0.0. Subsequent calls will reuse this data.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Warm-starting with WarmStartSettings: WarmStartSettings(ckpt_to_initialize_from='/tmp/tmpeaonpwe8/keras/keras_model.ckpt', vars_to_warm_start='.*', var_name_to_vocab_info={}, var_name_to_prev_var_name={})
INFO:tensorflow:Warm-starting with WarmStartSettings: WarmStartSettings(ckpt_to_initialize_from='/tmp/tmpeaonpwe8/keras/keras_model.ckpt', vars_to_warm_start='.*', var_name_to_vocab_info={}, var_name_to_prev_var_name={})
INFO:tensorflow:Warm-starting from: /tmp/tmpeaonpwe8/keras/keras_model.ckpt
INFO:tensorflow:Warm-starting from: /tmp/tmpeaonpwe8/keras/keras_model.ckpt
INFO:tensorflow:Warm-starting variables only in TRAINABLE_VARIABLES.
INFO:tensorflow:Warm-starting variables only in TRAINABLE_VARIABLES.
INFO:tensorflow:Warm-started 158 variables.
INFO:tensorflow:Warm-started 158 variables.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpeaonpwe8/model.ckpt.
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpeaonpwe8/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 0.6884984, step = 0
INFO:tensorflow:loss = 0.6884984, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 50...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 50...
INFO:tensorflow:Saving checkpoints for 50 into /tmp/tmpeaonpwe8/model.ckpt.
INFO:tensorflow:Saving checkpoints for 50 into /tmp/tmpeaonpwe8/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 50...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 50...
INFO:tensorflow:Loss for final step: 0.67705643.
INFO:tensorflow:Loss for final step: 0.67705643.
<tensorflow_estimator.python.estimator.estimator.EstimatorV2 at 0x7f3d7c3822b0>

একইভাবে, মূল্যায়ন করতে, অনুমানের মূল্যায়ন ফাংশনটি কল করুন:

est_mobilenet_v2.evaluate(input_fn=lambda: train_input_fn(32), steps=10)
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
/tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py:2325: UserWarning: `Model.state_updates` will be removed in a future version. This property should not be used in TensorFlow 2.0, as `updates` are applied automatically.
  warnings.warn('`Model.state_updates` will be removed in a future version. '
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2021-01-08T02:57:32Z
INFO:tensorflow:Starting evaluation at 2021-01-08T02:57:32Z
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpeaonpwe8/model.ckpt-50
INFO:tensorflow:Restoring parameters from /tmp/tmpeaonpwe8/model.ckpt-50
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Evaluation [1/10]
INFO:tensorflow:Evaluation [1/10]
INFO:tensorflow:Evaluation [2/10]
INFO:tensorflow:Evaluation [2/10]
INFO:tensorflow:Evaluation [3/10]
INFO:tensorflow:Evaluation [3/10]
INFO:tensorflow:Evaluation [4/10]
INFO:tensorflow:Evaluation [4/10]
INFO:tensorflow:Evaluation [5/10]
INFO:tensorflow:Evaluation [5/10]
INFO:tensorflow:Evaluation [6/10]
INFO:tensorflow:Evaluation [6/10]
INFO:tensorflow:Evaluation [7/10]
INFO:tensorflow:Evaluation [7/10]
INFO:tensorflow:Evaluation [8/10]
INFO:tensorflow:Evaluation [8/10]
INFO:tensorflow:Evaluation [9/10]
INFO:tensorflow:Evaluation [9/10]
INFO:tensorflow:Evaluation [10/10]
INFO:tensorflow:Evaluation [10/10]
INFO:tensorflow:Inference Time : 2.42050s
INFO:tensorflow:Inference Time : 2.42050s
INFO:tensorflow:Finished evaluation at 2021-01-08-02:57:35
INFO:tensorflow:Finished evaluation at 2021-01-08-02:57:35
INFO:tensorflow:Saving dict for global step 50: accuracy = 0.515625, global_step = 50, loss = 0.6688157
INFO:tensorflow:Saving dict for global step 50: accuracy = 0.515625, global_step = 50, loss = 0.6688157
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 50: /tmp/tmpeaonpwe8/model.ckpt-50
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 50: /tmp/tmpeaonpwe8/model.ckpt-50
{'accuracy': 0.515625, 'loss': 0.6688157, 'global_step': 50}

আরও বিশদের জন্য, দয়া করে tf.keras.estimator.model_to_estimator জন্য ডকুমেন্টেশন tf.keras.estimator.model_to_estimator

অনুমানের সাথে অবজেক্ট ভিত্তিক চেকপয়েন্টগুলি সংরক্ষণ করা হচ্ছে

ডিফল্টরূপে অনুমানকারীরা চেকপয়েন্ট গাইডে বর্ণিত অবজেক্ট গ্রাফের পরিবর্তে পরিবর্তনশীল নামের সাথে চেকপয়েন্টগুলি সংরক্ষণ করে। tf.train.Checkpoint নাম-ভিত্তিক চেকপয়েন্টগুলি পড়তে পারে তবে Estimator এর model_fn এর বাইরে কোনও মডেলের অংশগুলি সরানোর সময় পরিবর্তনশীল নামগুলি পরিবর্তন হতে পারে। ফরোয়ার্ডের জন্য সামঞ্জস্যতা সঞ্চয়কারী অবজেক্ট-ভিত্তিক চেকপয়েন্টগুলি এস্টিমেটরের অভ্যন্তরে কোনও মডেলকে প্রশিক্ষণ দেওয়া এবং তারপরে এটির বাইরে ব্যবহার করা সহজ করে তোলে।

import tensorflow.compat.v1 as tf_compat
def toy_dataset():
  inputs = tf.range(10.)[:, None]
  labels = inputs * 5. + tf.range(5.)[None, :]
  return tf.data.Dataset.from_tensor_slices(
    dict(x=inputs, y=labels)).repeat().batch(2)
class Net(tf.keras.Model):
  """A simple linear model."""

  def __init__(self):
    super(Net, self).__init__()
    self.l1 = tf.keras.layers.Dense(5)

  def call(self, x):
    return self.l1(x)
def model_fn(features, labels, mode):
  net = Net()
  opt = tf.keras.optimizers.Adam(0.1)
  ckpt = tf.train.Checkpoint(step=tf_compat.train.get_global_step(),
                             optimizer=opt, net=net)
  with tf.GradientTape() as tape:
    output = net(features['x'])
    loss = tf.reduce_mean(tf.abs(output - features['y']))
  variables = net.trainable_variables
  gradients = tape.gradient(loss, variables)
  return tf.estimator.EstimatorSpec(
    mode,
    loss=loss,
    train_op=tf.group(opt.apply_gradients(zip(gradients, variables)),
                      ckpt.step.assign_add(1)),
    # Tell the Estimator to save "ckpt" in an object-based format.
    scaffold=tf_compat.train.Scaffold(saver=ckpt))

tf.keras.backend.clear_session()
est = tf.estimator.Estimator(model_fn, './tf_estimator_example/')
est.train(toy_dataset, steps=10)
INFO:tensorflow:Using default config.
INFO:tensorflow:Using default config.
INFO:tensorflow:Using config: {'_model_dir': './tf_estimator_example/', '_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}
INFO:tensorflow:Using config: {'_model_dir': './tf_estimator_example/', '_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}
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Saving checkpoints for 0 into ./tf_estimator_example/model.ckpt.
INFO:tensorflow:Saving checkpoints for 0 into ./tf_estimator_example/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 4.4040537, step = 0
INFO:tensorflow:loss = 4.4040537, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 10...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 10...
INFO:tensorflow:Saving checkpoints for 10 into ./tf_estimator_example/model.ckpt.
INFO:tensorflow:Saving checkpoints for 10 into ./tf_estimator_example/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 10...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 10...
INFO:tensorflow:Loss for final step: 35.247967.
INFO:tensorflow:Loss for final step: 35.247967.
<tensorflow_estimator.python.estimator.estimator.EstimatorV2 at 0x7f3d64534518>

tf.train.Checkpoint তার model_dir থেকে model_dir চেকপয়েন্টগুলি লোড করতে পারে।

opt = tf.keras.optimizers.Adam(0.1)
net = Net()
ckpt = tf.train.Checkpoint(
  step=tf.Variable(1, dtype=tf.int64), optimizer=opt, net=net)
ckpt.restore(tf.train.latest_checkpoint('./tf_estimator_example/'))
ckpt.step.numpy()  # From est.train(..., steps=10)
10

প্রাক্কলনকারীদের থেকে সেভডমডেলস

অনুমানকারীরা tf.Estimator.export_saved_model এর মাধ্যমে tf.Estimator.export_saved_model

input_column = tf.feature_column.numeric_column("x")

estimator = tf.estimator.LinearClassifier(feature_columns=[input_column])

def input_fn():
  return tf.data.Dataset.from_tensor_slices(
    ({"x": [1., 2., 3., 4.]}, [1, 1, 0, 0])).repeat(200).shuffle(64).batch(16)
estimator.train(input_fn)
INFO:tensorflow:Using default config.
INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpczwhe6jk
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpczwhe6jk
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpczwhe6jk', '_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}
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpczwhe6jk', '_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}
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpczwhe6jk/model.ckpt.
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpczwhe6jk/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 0.6931472, step = 0
INFO:tensorflow:loss = 0.6931472, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 50...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 50...
INFO:tensorflow:Saving checkpoints for 50 into /tmp/tmpczwhe6jk/model.ckpt.
INFO:tensorflow:Saving checkpoints for 50 into /tmp/tmpczwhe6jk/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 50...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 50...
INFO:tensorflow:Loss for final step: 0.48830828.
INFO:tensorflow:Loss for final step: 0.48830828.
<tensorflow_estimator.python.estimator.canned.linear.LinearClassifierV2 at 0x7f3d6452eb00>

একটি সংরক্ষণ করতে Estimator আপনি একটি তৈরি করতে হবে serving_input_receiver । এই ফাংশনটি tf.Graph একটি অংশ তৈরি করে যা সেভডমোডেল দ্বারা প্রাপ্ত কাঁচা ডেটা পার্স করে।

tf.estimator.export মডিউলটিতে এই receivers তৈরি করতে সহায়তা করার জন্য ফাংশন রয়েছে।

নিম্নলিখিত কোডটি বৈশিষ্ট্য_সামগ্রীগুলির উপর ভিত্তি করে একটি রিসিভার তৈরি করে, যা সিরিয়ালযুক্ত tf.Example গ্রহণ করে feature_columns tf.Example প্রোটোকল বাফারগুলি, যা প্রায়শই টিএফ-পরিবেশনের সাথে ব্যবহৃত হয়।

tmpdir = tempfile.mkdtemp()

serving_input_fn = tf.estimator.export.build_parsing_serving_input_receiver_fn(
  tf.feature_column.make_parse_example_spec([input_column]))

estimator_base_path = os.path.join(tmpdir, 'from_estimator')
estimator_path = estimator.export_saved_model(estimator_base_path, serving_input_fn)
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/saved_model/signature_def_utils_impl.py:145: build_tensor_info (from tensorflow.python.saved_model.utils_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.utils.build_tensor_info or tf.compat.v1.saved_model.build_tensor_info.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/saved_model/signature_def_utils_impl.py:145: build_tensor_info (from tensorflow.python.saved_model.utils_impl) is deprecated and will be removed in a future version.
Instructions for updating:
This function will only be available through the v1 compatibility library as tf.compat.v1.saved_model.utils.build_tensor_info or tf.compat.v1.saved_model.build_tensor_info.
INFO:tensorflow:Signatures INCLUDED in export for Classify: ['serving_default', 'classification']
INFO:tensorflow:Signatures INCLUDED in export for Classify: ['serving_default', 'classification']
INFO:tensorflow:Signatures INCLUDED in export for Regress: ['regression']
INFO:tensorflow:Signatures INCLUDED in export for Regress: ['regression']
INFO:tensorflow:Signatures INCLUDED in export for Predict: ['predict']
INFO:tensorflow:Signatures INCLUDED in export for Predict: ['predict']
INFO:tensorflow:Signatures INCLUDED in export for Train: None
INFO:tensorflow:Signatures INCLUDED in export for Train: None
INFO:tensorflow:Signatures INCLUDED in export for Eval: None
INFO:tensorflow:Signatures INCLUDED in export for Eval: None
INFO:tensorflow:Restoring parameters from /tmp/tmpczwhe6jk/model.ckpt-50
INFO:tensorflow:Restoring parameters from /tmp/tmpczwhe6jk/model.ckpt-50
INFO:tensorflow:Assets added to graph.
INFO:tensorflow:Assets added to graph.
INFO:tensorflow:No assets to write.
INFO:tensorflow:No assets to write.
INFO:tensorflow:SavedModel written to: /tmp/tmp16t8uhub/from_estimator/temp-1610074656/saved_model.pb
INFO:tensorflow:SavedModel written to: /tmp/tmp16t8uhub/from_estimator/temp-1610074656/saved_model.pb

অজগর থেকে আপনি সেই মডেলটি লোড এবং চালাতে পারেন:

imported = tf.saved_model.load(estimator_path)

def predict(x):
  example = tf.train.Example()
  example.features.feature["x"].float_list.value.extend([x])
  return imported.signatures["predict"](
    examples=tf.constant([example.SerializeToString()]))
print(predict(1.5))
print(predict(3.5))
{'logistic': <tf.Tensor: shape=(1, 1), dtype=float32, numpy=array([[0.581246]], dtype=float32)>, 'logits': <tf.Tensor: shape=(1, 1), dtype=float32, numpy=array([[0.32789052]], dtype=float32)>, 'all_classes': <tf.Tensor: shape=(1, 2), dtype=string, numpy=array([[b'0', b'1']], dtype=object)>, 'probabilities': <tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[0.418754, 0.581246]], dtype=float32)>, 'all_class_ids': <tf.Tensor: shape=(1, 2), dtype=int32, numpy=array([[0, 1]], dtype=int32)>, 'classes': <tf.Tensor: shape=(1, 1), dtype=string, numpy=array([[b'1']], dtype=object)>, 'class_ids': <tf.Tensor: shape=(1, 1), dtype=int64, numpy=array([[1]])>}
{'logistic': <tf.Tensor: shape=(1, 1), dtype=float32, numpy=array([[0.24376468]], dtype=float32)>, 'logits': <tf.Tensor: shape=(1, 1), dtype=float32, numpy=array([[-1.1321492]], dtype=float32)>, 'all_classes': <tf.Tensor: shape=(1, 2), dtype=string, numpy=array([[b'0', b'1']], dtype=object)>, 'probabilities': <tf.Tensor: shape=(1, 2), dtype=float32, numpy=array([[0.7562353 , 0.24376468]], dtype=float32)>, 'all_class_ids': <tf.Tensor: shape=(1, 2), dtype=int32, numpy=array([[0, 1]], dtype=int32)>, 'classes': <tf.Tensor: shape=(1, 1), dtype=string, numpy=array([[b'0']], dtype=object)>, 'class_ids': <tf.Tensor: shape=(1, 1), dtype=int64, numpy=array([[0]])>}

tf.estimator.export.build_raw_serving_input_receiver_fn আপনাকে ইনপুট ফাংশন তৈরি করতে দেয় যা tf.train.Example s এর পরিবর্তে কাঁচা tf.train.Example

tf.distribute.Strategy সাথে tf.distribute.Strategy ব্যবহার (সীমিত সমর্থন)

tf.estimator একটি বিতরণ প্রশিক্ষণ টেনসরফ্লো এপিআই যা মূলত async প্যারামিটার সার্ভার পদ্ধতির সমর্থন করে। tf.estimator এখন tf.estimator সমর্থন tf.distribute.Strategy । আপনি যদি tf.estimator ব্যবহার করে থাকেন তবে আপনি আপনার tf.estimator খুব কম পরিবর্তন নিয়ে বিতরণ প্রশিক্ষণে পরিবর্তন করতে পারেন। এটির সাহায্যে, অনুমানের ব্যবহারকারীরা এখন একাধিক জিপিইউ এবং একাধিক কর্মীদের উপর সিঙ্ক্রোনাস বিতরণ প্রশিক্ষণ, পাশাপাশি টিপিইউ ব্যবহার করতে পারবেন। Estimator এ এই সমর্থনটি যদিও সীমাবদ্ধ। আরও বিশদের জন্য নীচে এখন কী সমর্থন করা হয়েছে তা দেখুন।

tf.distribute.Strategy সাথে tf.distribute.Strategy ব্যবহার কেরাস ক্ষেত্রে তুলনায় কিছুটা আলাদা। ব্যবহার করার পরিবর্তে strategy.scope , এখন আপনি মধ্যে কৌশল বস্তুর পাস RunConfig মূল্নির্ধারক জন্য।

আপনি আরও তথ্যের জন্য বিতরণ প্রশিক্ষণ গাইড পড়তে পারেন।

এখানে কোডের একটি টুকরো যার এমন কোন premade মূল্নির্ধারক সঙ্গে শো এই LinearRegressor এবং MirroredStrategy :

mirrored_strategy = tf.distribute.MirroredStrategy()
config = tf.estimator.RunConfig(
    train_distribute=mirrored_strategy, eval_distribute=mirrored_strategy)
regressor = tf.estimator.LinearRegressor(
    feature_columns=[tf.feature_column.numeric_column('feats')],
    optimizer='SGD',
    config=config)
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)
INFO:tensorflow:Using MirroredStrategy with devices ('/job:localhost/replica:0/task:0/device:GPU:0',)
INFO:tensorflow:Initializing RunConfig with distribution strategies.
INFO:tensorflow:Initializing RunConfig with distribution strategies.
INFO:tensorflow:Not using Distribute Coordinator.
INFO:tensorflow:Not using Distribute Coordinator.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmp4uihzu_a
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmp4uihzu_a
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmp4uihzu_a', '_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': <tensorflow.python.distribute.mirrored_strategy.MirroredStrategy object at 0x7f3e84699518>, '_device_fn': None, '_protocol': None, '_eval_distribute': <tensorflow.python.distribute.mirrored_strategy.MirroredStrategy object at 0x7f3e84699518>, '_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, '_distribute_coordinator_mode': None}
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmp4uihzu_a', '_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': <tensorflow.python.distribute.mirrored_strategy.MirroredStrategy object at 0x7f3e84699518>, '_device_fn': None, '_protocol': None, '_eval_distribute': <tensorflow.python.distribute.mirrored_strategy.MirroredStrategy object at 0x7f3e84699518>, '_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, '_distribute_coordinator_mode': None}

এখানে, আপনি একটি প্রিমেড অনুমান ব্যবহার করেন তবে একই কোডটি কাস্টম এসটিমেটরের সাথেও কাজ করে। train_distribute কীভাবে প্রশিক্ষণ বিতরণ করা হবে তা নির্ধারণ করে এবং মূল্যায়ন কীভাবে বিতরণ করা হবে তা নির্ধারণ করে eval_distribute এটি কেরাসের থেকে অন্য একটি পার্থক্য যেখানে আপনি প্রশিক্ষণ এবং ইভাল উভয়ের জন্য একই কৌশল ব্যবহার করেন।

এখন আপনি একটি ইনপুট ফাংশন সহ এই অনুমানটিকে প্রশিক্ষণ এবং মূল্যায়ন করতে পারেন:

def input_fn():
  dataset = tf.data.Dataset.from_tensors(({"feats":[1.]}, [1.]))
  return dataset.repeat(1000).batch(10)
regressor.train(input_fn=input_fn, steps=10)
regressor.evaluate(input_fn=input_fn, steps=10)
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Create CheckpointSaverHook.
INFO:tensorflow:Create CheckpointSaverHook.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/util.py:96: DistributedIteratorV1.initialize (from tensorflow.python.distribute.input_lib) is deprecated and will be removed in a future version.
Instructions for updating:
Use the iterator's `initializer` property instead.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/util.py:96: DistributedIteratorV1.initialize (from tensorflow.python.distribute.input_lib) is deprecated and will be removed in a future version.
Instructions for updating:
Use the iterator's `initializer` property instead.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 0...
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmp4uihzu_a/model.ckpt.
INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmp4uihzu_a/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 1.0, step = 0
INFO:tensorflow:loss = 1.0, step = 0
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 10...
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 10...
INFO:tensorflow:Saving checkpoints for 10 into /tmp/tmp4uihzu_a/model.ckpt.
INFO:tensorflow:Saving checkpoints for 10 into /tmp/tmp4uihzu_a/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 10...
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 10...
INFO:tensorflow:Loss for final step: 2.877698e-13.
INFO:tensorflow:Loss for final step: 2.877698e-13.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Reduce to /replica:0/task:0/device:CPU:0 then broadcast to ('/replica:0/task:0/device:CPU:0',).
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2021-01-08T02:57:41Z
INFO:tensorflow:Starting evaluation at 2021-01-08T02:57:41Z
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmp4uihzu_a/model.ckpt-10
INFO:tensorflow:Restoring parameters from /tmp/tmp4uihzu_a/model.ckpt-10
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Evaluation [1/10]
INFO:tensorflow:Evaluation [1/10]
INFO:tensorflow:Evaluation [2/10]
INFO:tensorflow:Evaluation [2/10]
INFO:tensorflow:Evaluation [3/10]
INFO:tensorflow:Evaluation [3/10]
INFO:tensorflow:Evaluation [4/10]
INFO:tensorflow:Evaluation [4/10]
INFO:tensorflow:Evaluation [5/10]
INFO:tensorflow:Evaluation [5/10]
INFO:tensorflow:Evaluation [6/10]
INFO:tensorflow:Evaluation [6/10]
INFO:tensorflow:Evaluation [7/10]
INFO:tensorflow:Evaluation [7/10]
INFO:tensorflow:Evaluation [8/10]
INFO:tensorflow:Evaluation [8/10]
INFO:tensorflow:Evaluation [9/10]
INFO:tensorflow:Evaluation [9/10]
INFO:tensorflow:Evaluation [10/10]
INFO:tensorflow:Evaluation [10/10]
INFO:tensorflow:Inference Time : 0.26266s
INFO:tensorflow:Inference Time : 0.26266s
INFO:tensorflow:Finished evaluation at 2021-01-08-02:57:42
INFO:tensorflow:Finished evaluation at 2021-01-08-02:57:42
INFO:tensorflow:Saving dict for global step 10: average_loss = 1.4210855e-14, global_step = 10, label/mean = 1.0, loss = 1.4210855e-14, prediction/mean = 0.99999994
INFO:tensorflow:Saving dict for global step 10: average_loss = 1.4210855e-14, global_step = 10, label/mean = 1.0, loss = 1.4210855e-14, prediction/mean = 0.99999994
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 10: /tmp/tmp4uihzu_a/model.ckpt-10
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 10: /tmp/tmp4uihzu_a/model.ckpt-10
{'average_loss': 1.4210855e-14,
 'label/mean': 1.0,
 'loss': 1.4210855e-14,
 'prediction/mean': 0.99999994,
 'global_step': 10}

এখানে অনুমানকারী এবং কেরাসের মধ্যে হাইলাইট করার আরেকটি পার্থক্য হ'ল ইনপুট হ্যান্ডলিং। কেরাসে, ডেটাসেটের প্রতিটি ব্যাচ একাধিক প্রতিরূপে স্বয়ংক্রিয়ভাবে বিভক্ত হয়। অনুমানকগুলিতে, তবে আপনি স্বয়ংক্রিয় ব্যাচ বিভাজন করেন না, বা স্বয়ংক্রিয়ভাবে বিভিন্ন কর্মীদের মধ্যে ডেটাটি তীক্ষ্ণভাবে দেখান। আপনি কীভাবে আপনার ডেটা কর্মী এবং ডিভাইসগুলিতে বিতরণ করতে চান তার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে এবং কীভাবে আপনার ডেটা বিতরণ করতে হবে তা নির্দিষ্ট করতে আপনাকে অবশ্যই একটি input_fn করতে হবে।

আপনার input_fn প্রতি শ্রমিক প্রতি একবার ডাকা হয়, এইভাবে প্রতি শ্রমিককে একটি ডেটাসেট দেয়। তারপরে সেই ডেটাসেটের একটি ব্যাচ সেই শ্রমিকের একটি প্রতিলিপিতে খাওয়ানো হয়, যার ফলে 1 জন কর্মীর উপর এন প্রতিরূপের জন্য এন ব্যাচগুলি গ্রাস করে। অন্য কথায়, ডেটা সেটটি দ্বারা ফিরে input_fn আকারের ব্যাচ প্রদান করা উচিত PER_REPLICA_BATCH_SIZE । এবং একটি পদক্ষেপের জন্য বিশ্বব্যাপী ব্যাচের আকারটি PER_REPLICA_BATCH_SIZE * strategy.num_replicas_in_sync . PER_REPLICA_BATCH_SIZE * strategy.num_replicas_in_sync হিসাবে প্রাপ্ত হতে পারে।

বহু শ্রমিক প্রশিক্ষণ নেওয়ার সময়, আপনি হয় কর্মীদের মধ্যে আপনার ডেটা বিভক্ত করা উচিত, বা প্রতিটি এলোমেলো বীজ সঙ্গে পরিবর্তন করতে হবে। এস্টিমেটার টিউটোরিয়াল দিয়ে মাল্টি-ওয়ার্কার প্রশিক্ষণে এটি কীভাবে করা যায় তার একটি উদাহরণ আপনি পরীক্ষা করতে পারেন।

এবং একইভাবে, আপনি মাল্টি ওয়ার্কার এবং পরামিতি সার্ভার কৌশলগুলিও ব্যবহার করতে পারেন। কোড অবশেষ একই, কিন্তু আপনি ব্যবহার করতে হবে tf.estimator.train_and_evaluate , এবং সেট TF_CONFIG আপনার ক্লাস্টার প্রতিটি বাইনারি চলমান জন্য বিভিন্ন পরিবেশের।

এখন কি সমর্থিত?

TPUStrategy ব্যতীত সমস্ত কৌশল ব্যবহার করে TPUStrategy সাথে প্রশিক্ষণের জন্য সীমিত সমর্থন TPUStrategy । বেসিক প্রশিক্ষণ এবং মূল্যায়ন কাজ করা উচিত, তবে v1.train.Scaffold হিসাবে v1.train.Scaffold উন্নত বৈশিষ্ট্য। এই সংহতকরণে বেশ কয়েকটি বাগও থাকতে পারে এবং সক্রিয়ভাবে এই সমর্থনটি উন্নত করার কোনও পরিকল্পনা নেই (ফোকাসটি কেরাস এবং কাস্টম প্রশিক্ষণের লুপ সমর্থনকে কেন্দ্র করে)। যদি tf.distribute সম্ভব হয় তবে আপনার পরিবর্তে সেই API গুলির সাথে tf.distribute ব্যবহার করা পছন্দ করা উচিত।

প্রশিক্ষণ এপিআই মিররডস্ট্রজি টিপিউসট্রেজি মাল্টি ওয়ার্কারমিরর্ডার্ডস্ট্রেজি সেন্ট্রাল স্টোরেজস্ট্রেজি প্যারামিটার সার্ভারস্ট্রেটজি
অনুমানকারী API সীমিত সমর্থন সমর্থিত নয় সীমিত সমর্থন সীমিত সমর্থন সীমিত সমর্থন

উদাহরণ এবং টিউটোরিয়াল

এখানে কিছু শেষ-শেষের উদাহরণ রয়েছে যা দেখায় যে কীভাবে Estimator সহ বিভিন্ন কৌশল ব্যবহার করতে হয়:

  1. MultiWorkerMirroredStrategy টিউটোরিয়াল সহ একাধিক কর্মী প্রশিক্ষণ আপনাকে দেখায় যে কীভাবে আপনি এমএনআইএসটি ডেটাসেটে মাল্টি ওয়ার্কার MultiWorkerMirroredStrategy ব্যবহার করে একাধিক কর্মীদের সাথে প্রশিক্ষণ দিতে পারেন।
  2. কুবেরনেটস টেমপ্লেটগুলি ব্যবহার করে টেনসরফ্লো tensorflow/ecosystem বিতরণ কৌশলগুলি সহ বহু-কর্মী প্রশিক্ষণ চালানোর একটি শেষ থেকে শেষ উদাহরণ। এটি কেরাস মডেল দিয়ে শুরু হয় এবং এটিকে tf.keras.estimator.model_to_estimator API ব্যবহার করে একটি tf.keras.estimator.model_to_estimator রূপান্তর করে।
  3. সরকারী ResNet50 মডেল, যা যেকোন একটি ব্যবহার করে প্রশিক্ষিত করা যেতে পারে MirroredStrategy বা MultiWorkerMirroredStrategy