इस पेज का अनुवाद Cloud Translation API से किया गया है.
Switch to English

आकलनकर्ता

TensorFlow.org पर देखें Google Colab में चलाएं GitHub पर स्रोत देखें नोटबुक डाउनलोड करें

यह दस्तावेज़ tf.estimator –a उच्च-स्तरीय TensorFlow API का परिचय देता है। अनुमानक निम्नलिखित क्रियाओं को अंजाम देते हैं:

  • प्रशिक्षण
  • मूल्यांकन
  • भविष्यवाणी
  • सेवा के लिए निर्यात

आप या तो हमारे द्वारा बनाए गए पूर्व-अनुमानकों का उपयोग कर सकते हैं या अपने स्वयं के कस्टम अनुमानक लिख सकते हैं। सभी tf.estimator.Estimator चाहे पूर्व-निर्मित या कस्टम - tf.estimator.Estimator वर्ग पर आधारित वर्ग हैं।

एक त्वरित उदाहरण के लिए अनुमानक ट्यूटोरियल का प्रयास करें। एपीआई डिजाइन के अवलोकन के लिए, श्वेत पत्र देखें।

लाभ

एक tf.keras.Model समान, एक estimator एक मॉडल-स्तरीय अमूर्तता है। tf.estimator वर्तमान में अभी भी tf.keras के विकास के तहत कुछ क्षमताएं प्रदान करता है। य़े हैं:

  • पैरामीटर सर्वर आधारित प्रशिक्षण
  • पूर्ण TFX एकीकरण।

अनुमानक क्षमताएँ

अनुमानक निम्नलिखित लाभ प्रदान करते हैं:

  • आप अपने मॉडल को बदले बिना एक स्थानीय होस्ट या एक वितरित मल्टी-सर्वर वातावरण पर एस्टीमेटर-आधारित मॉडल चला सकते हैं। इसके अलावा, आप अपने मॉडल को पुन: स्थापित किए बिना CPU, GPU, या TPU पर एस्टिमेटर-आधारित मॉडल चला सकते हैं।
  • अनुमानक एक सुरक्षित वितरित प्रशिक्षण लूप प्रदान करते हैं जो नियंत्रित करता है कि कैसे और कब:
    • लोड डेटा
    • अपवादों को संभालें
    • चेकपॉइंट फ़ाइलें बनाएँ और विफलताओं से पुनर्प्राप्त करें
    • TensorBoard के लिए सारांश सहेजें

एस्टिमेटर्स के साथ एप्लिकेशन लिखते समय, आपको मॉडल से डेटा इनपुट पाइपलाइन को अलग करना होगा। यह पृथक्करण अलग-अलग डेटा सेट के साथ प्रयोगों को सरल बनाता है।

पूर्व-निर्मित अनुमानक

पूर्व-निर्मित एस्टिमेटर्स आपको बेस टेंसरफ्लो एपीआई की तुलना में बहुत अधिक वैचारिक स्तर पर काम करने में सक्षम बनाते हैं। अब आपको कम्प्यूटेशनल ग्राफ या सत्र बनाने के बारे में चिंता करने की ज़रूरत नहीं है क्योंकि एस्टिमेटर्स आपके लिए सभी "प्लंबिंग" को संभालते हैं। इसके अलावा, पूर्व-निर्मित अनुमानकर्ता आपको केवल न्यूनतम कोड परिवर्तन करके विभिन्न मॉडल आर्किटेक्चर के साथ प्रयोग करने देते हैं। tf.estimator.DNNClassifier , उदाहरण के लिए, एक पूर्व-निर्मित एस्टीमेटर वर्ग है जो घने, फ़ीड-आगे तंत्रिका नेटवर्क के आधार पर वर्गीकरण मॉडल को प्रशिक्षित करता है।

पूर्व-निर्मित एस्टिमेटर्स कार्यक्रम की संरचना

एक TensorFlow प्रोग्राम एक पूर्व-निर्मित एस्टीमेटर पर निर्भर करता है, जिसमें आमतौर पर निम्नलिखित चार चरण होते हैं:

1. एक या अधिक डेटासेट आयात करने वाले कार्य लिखें।

उदाहरण के लिए, आप प्रशिक्षण सेट को आयात करने के लिए एक फ़ंक्शन बना सकते हैं और परीक्षण सेट को आयात करने के लिए एक और फ़ंक्शन। फ़ंक्शन आयात करने वाले प्रत्येक डेटासेट को दो ऑब्जेक्ट वापस करने होंगे:

  • एक शब्दकोश जिसमें कुंजियाँ फ़ीचर के नाम हैं और मान संबंधित फीचर डेटा वाले Tensors (या SparseTensors) हैं।
  • एक या एक से अधिक लेबल युक्त सेंसर

उदाहरण के लिए, निम्न कोड एक इनपुट फ़ंक्शन के लिए मूल कंकाल दिखाता है:

def input_fn(dataset):
    ...  # manipulate dataset, extracting the feature dict and the label
    return feature_dict, label

विवरण के लिए डेटा गाइड देखें।

2. फीचर कॉलम को परिभाषित करें।

प्रत्येक tf.feature_column एक फीचर नाम, उसके प्रकार और किसी इनपुट प्री-प्रोसेसिंग की पहचान करता है। उदाहरण के लिए, निम्न स्निपेट पूर्णांक या फ्लोटिंग-पॉइंट डेटा रखने वाले तीन फ़ीचर कॉलम बनाता है। पहले दो फीचर कॉलम केवल फीचर के नाम और प्रकार की पहचान करते हैं। तीसरा फीचर कॉलम एक मेमने को भी निर्दिष्ट करता है जो प्रोग्राम कच्चे डेटा को स्केल करने के लिए आमंत्रित करेगा:

# Define three numeric feature columns.
population = tf.feature_column.numeric_column('population')
crime_rate = tf.feature_column.numeric_column('crime_rate')
median_education = tf.feature_column.numeric_column(
  'median_education',
  normalizer_fn=lambda x: x - global_education_mean)

अधिक जानकारी के लिए, फ़ीचर कॉलम ट्यूटोरियल देखें

3. संबंधित पूर्व-निर्मित एस्टीमेटर को तुरंत करें।

उदाहरण के लिए, यहाँ एक पूर्व- LinearClassifier एस्टीमेटर का एक नमूना तात्कालिकता है जिसका नाम LinearClassifier :

# Instantiate an estimator, passing the feature columns.
estimator = tf.estimator.LinearClassifier(
  feature_columns=[population, crime_rate, median_education])

अधिक जानकारी के लिए, लीनियर क्लासिफायरियर ट्यूटोरियल देखें

4. एक प्रशिक्षण, मूल्यांकन या अनुमान पद्धति को बुलाओ।

उदाहरण के लिए, सभी अनुमानक एक train विधि प्रदान करते हैं, जो एक मॉडल को प्रशिक्षित करता है।

# `input_fn` is the function created in Step 1
estimator.train(input_fn=my_training_set, steps=2000)

आप इसका एक उदाहरण नीचे देख सकते हैं।

पूर्व-निर्मित अनुमानकर्ताओं के लाभ

पूर्व-निर्मित अनुमानक सर्वोत्तम प्रथाओं को सांकेतिक शब्दों में बदलना, निम्नलिखित लाभ प्रदान करते हैं:

  • यह निर्धारित करने के लिए सर्वोत्तम अभ्यास कि कम्प्यूटेशनल ग्राफ़ के विभिन्न हिस्सों को कैसे चलाना चाहिए, एक मशीन पर या एक क्लस्टर पर रणनीतियों को लागू करना।
  • घटना (सारांश) लेखन और सार्वभौमिक रूप से उपयोगी सारांश के लिए सर्वोत्तम अभ्यास।

यदि आप पूर्व-निर्मित एस्टिमेटर्स का उपयोग नहीं करते हैं, तो आपको पूर्ववर्ती सुविधाओं को स्वयं लागू करना होगा।

कस्टम अनुमानक

प्रत्येक अनुमानक का दिल — चाहे वह पूर्व-निर्मित हो या कस्टम-उसका मॉडल फ़ंक्शन हो , जो एक ऐसी विधि है जो प्रशिक्षण, मूल्यांकन और भविष्यवाणी के लिए ग्राफ़ बनाता है। जब आप पूर्व-निर्मित एस्टिमेटर का उपयोग कर रहे हैं, तो किसी और ने मॉडल फ़ंक्शन को पहले ही लागू कर दिया है। जब एक कस्टम एस्टीमेटर पर भरोसा करते हैं, तो आपको मॉडल फ़ंक्शन को स्वयं लिखना होगा।

  1. एक उपयुक्त पूर्व-निर्मित एस्टीमेटर मौजूद है, यह मानते हुए कि अपने पहले मॉडल का निर्माण करने के लिए इसका उपयोग करें और एक आधार रेखा को स्थापित करने के लिए इसके परिणामों का उपयोग करें।
  2. इस पूर्व-निर्मित एस्टीमेटर के साथ अपने डेटा की अखंडता और विश्वसनीयता सहित अपनी समग्र पाइपलाइन का निर्माण और परीक्षण करें।
  3. यदि उपयुक्त वैकल्पिक पूर्व-निर्मित एस्टिमेटर उपलब्ध हैं, तो यह निर्धारित करने के लिए प्रयोगों को चलाएं कि पूर्व-निर्मित एस्टिमेटर सर्वोत्तम परिणाम उत्पन्न करता है।
  4. संभवतः, अपने स्वयं के कस्टम अनुमानक का निर्माण करके अपने मॉडल में और सुधार करें।
import tensorflow as tf
import tensorflow_datasets as tfds

एक केरस मॉडल से एक अनुमानक बनाएं

आप मौजूदा tf.keras.estimator.model_to_estimator मॉडल को tf.keras.estimator.model_to_estimator से एस्टिमेटर्स में tf.keras.estimator.model_to_estimator । ऐसा करने से आपके केरेस मॉडल को एस्टिमेटर की ताकत का उपयोग करने में सक्षम बनाता है, जैसे वितरित प्रशिक्षण।

Keras MobileNet V2 मॉडल को तुरंत टाइप करें और इसके साथ प्रशिक्षित करने के लिए अनुकूलक, हानि, और मैट्रिक्स के साथ मॉडल संकलित करें:

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 [==============================] - 1s 0us/step

संकलित Keras मॉडल से एक Estimator बनाएँ। करस मॉडल का प्रारंभिक मॉडल राज्य बनाए गए 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/tmpk2yc1sw_
INFO:tensorflow:Using the Keras model provided.
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow_estimator/python/estimator/keras.py:220: set_learning_phase (from tensorflow.python.keras.backend) is deprecated and will be removed after 2020-10-11.
Instructions for updating:
Simply pass a True/False value to the `training` argument of the `__call__` method of your layer or model.
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpk2yc1sw_', '_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, '_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=500)
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 and preparing dataset cats_vs_dogs/4.0.0 (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

Shuffling and writing examples to /home/kbuilder/tensorflow_datasets/cats_vs_dogs/4.0.0.incompleteBO81F5/cats_vs_dogs-train.tfrecord
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/tmpk2yc1sw_/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/tmpk2yc1sw_/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/tmpk2yc1sw_/keras/keras_model.ckpt

INFO:tensorflow:Warm-starting from: /tmp/tmpk2yc1sw_/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/tmpk2yc1sw_/model.ckpt.

INFO:tensorflow:Saving checkpoints for 0 into /tmp/tmpk2yc1sw_/model.ckpt.

INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...

INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...

INFO:tensorflow:loss = 0.8240633, step = 0

INFO:tensorflow:loss = 0.8240633, step = 0

INFO:tensorflow:global_step/sec: 22.1268

INFO:tensorflow:global_step/sec: 22.1268

INFO:tensorflow:loss = 0.66763145, step = 100 (4.521 sec)

INFO:tensorflow:loss = 0.66763145, step = 100 (4.521 sec)

INFO:tensorflow:global_step/sec: 23.8348

INFO:tensorflow:global_step/sec: 23.8348

INFO:tensorflow:loss = 0.6708636, step = 200 (4.195 sec)

INFO:tensorflow:loss = 0.6708636, step = 200 (4.195 sec)

INFO:tensorflow:global_step/sec: 23.9713

INFO:tensorflow:global_step/sec: 23.9713

INFO:tensorflow:loss = 0.61437285, step = 300 (4.172 sec)

INFO:tensorflow:loss = 0.61437285, step = 300 (4.172 sec)

INFO:tensorflow:global_step/sec: 23.8109

INFO:tensorflow:global_step/sec: 23.8109

INFO:tensorflow:loss = 0.65069425, step = 400 (4.199 sec)

INFO:tensorflow:loss = 0.65069425, step = 400 (4.199 sec)

INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 500...

INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 500...

INFO:tensorflow:Saving checkpoints for 500 into /tmp/tmpk2yc1sw_/model.ckpt.

INFO:tensorflow:Saving checkpoints for 500 into /tmp/tmpk2yc1sw_/model.ckpt.

INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 500...

INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 500...

INFO:tensorflow:Loss for final step: 0.5952678.

INFO:tensorflow:Loss for final step: 0.5952678.

<tensorflow_estimator.python.estimator.estimator.EstimatorV2 at 0x7f6a584aeb70>

इसी प्रकार, मूल्यांकन करने के लिए, एस्टिमेटर के मूल्यांकन फ़ंक्शन को कॉल करें:

est_mobilenet_v2.evaluate(input_fn=lambda: train_input_fn(32), steps=10)
INFO:tensorflow:Calling model_fn.

INFO:tensorflow:Calling model_fn.

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_v1.py:2048: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
This property should not be used in TensorFlow 2.0, as updates are applied automatically.

Warning:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_v1.py:2048: Model.state_updates (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.
Instructions for updating:
This property should not be used in TensorFlow 2.0, as updates are applied automatically.

INFO:tensorflow:Done calling model_fn.

INFO:tensorflow:Done calling model_fn.

INFO:tensorflow:Starting evaluation at 2020-09-11T01:22:33Z

INFO:tensorflow:Starting evaluation at 2020-09-11T01:22:33Z

INFO:tensorflow:Graph was finalized.

INFO:tensorflow:Graph was finalized.

INFO:tensorflow:Restoring parameters from /tmp/tmpk2yc1sw_/model.ckpt-500

INFO:tensorflow:Restoring parameters from /tmp/tmpk2yc1sw_/model.ckpt-500

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.07820s

INFO:tensorflow:Inference Time : 2.07820s

INFO:tensorflow:Finished evaluation at 2020-09-11-01:22:35

INFO:tensorflow:Finished evaluation at 2020-09-11-01:22:35

INFO:tensorflow:Saving dict for global step 500: accuracy = 0.63125, global_step = 500, loss = 0.630646

INFO:tensorflow:Saving dict for global step 500: accuracy = 0.63125, global_step = 500, loss = 0.630646

INFO:tensorflow:Saving 'checkpoint_path' summary for global step 500: /tmp/tmpk2yc1sw_/model.ckpt-500

INFO:tensorflow:Saving 'checkpoint_path' summary for global step 500: /tmp/tmpk2yc1sw_/model.ckpt-500

{'accuracy': 0.63125, 'loss': 0.630646, 'global_step': 500}

अधिक जानकारी के लिए, कृपया tf.keras.estimator.model_to_estimator लिए दस्तावेज़ देखें।