প্রিমেড এস্টিমেটর

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

এই টিউটোরিয়ালটি আপনাকে দেখায় কিভাবে এস্টিমেটর ব্যবহার করে টেনসরফ্লোতে আইরিস শ্রেণীবিভাগ সমস্যা সমাধান করা যায়। একটি অনুমানকারী হল একটি সম্পূর্ণ মডেলের একটি উত্তরাধিকার টেনসরফ্লো উচ্চ-স্তরের উপস্থাপনা৷ আরও বিস্তারিত জানার জন্য অনুমানকারী দেখুন।

আগেরটা আগে

শুরু করার জন্য, আপনি প্রথমে TensorFlow এবং আপনার প্রয়োজনীয় সংখ্যক লাইব্রেরি আমদানি করবেন।

import tensorflow as tf

import pandas as pd

ডেটা সেট

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

আপনি আইরিস ডেটা সেট ব্যবহার করে একটি মডেলকে প্রশিক্ষণ দেবেন। আইরিস ডেটা সেটে চারটি বৈশিষ্ট্য এবং একটি লেবেল রয়েছে। চারটি বৈশিষ্ট্য পৃথক আইরিস ফুলের নিম্নলিখিত বোটানিকাল বৈশিষ্ট্যগুলিকে চিহ্নিত করে:

  • সেপাল দৈর্ঘ্য
  • সেপাল প্রস্থ
  • পাপড়ি দৈর্ঘ্য
  • পাপড়ি প্রস্থ

এই তথ্যের উপর ভিত্তি করে, আপনি ডেটা পার্স করার জন্য কয়েকটি সহায়ক ধ্রুবক সংজ্ঞায়িত করতে পারেন:

CSV_COLUMN_NAMES = ['SepalLength', 'SepalWidth', 'PetalLength', 'PetalWidth', 'Species']
SPECIES = ['Setosa', 'Versicolor', 'Virginica']

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

train_path = tf.keras.utils.get_file(
    "iris_training.csv", "https://storage.googleapis.com/download.tensorflow.org/data/iris_training.csv")
test_path = tf.keras.utils.get_file(
    "iris_test.csv", "https://storage.googleapis.com/download.tensorflow.org/data/iris_test.csv")

train = pd.read_csv(train_path, names=CSV_COLUMN_NAMES, header=0)
test = pd.read_csv(test_path, names=CSV_COLUMN_NAMES, header=0)
Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/iris_training.csv
16384/2194 [================================================================================================================================================================================================================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/download.tensorflow.org/data/iris_test.csv
16384/573 [=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================] - 0s 0us/step

আপনার কাছে চারটি ফ্লোট বৈশিষ্ট্য কলাম এবং একটি int32 লেবেল আছে তা দেখতে আপনি আপনার ডেটা পরিদর্শন করতে পারেন।

train.head()

প্রতিটি ডেটাসেটের জন্য, লেবেলগুলিকে বিভক্ত করুন, যা মডেলটিকে ভবিষ্যদ্বাণী করতে প্রশিক্ষিত করা হবে৷

train_y = train.pop('Species')
test_y = test.pop('Species')

# The label column has now been removed from the features.
train.head()

অনুমানকারীদের সাথে প্রোগ্রামিংয়ের ওভারভিউ

এখন আপনি ডেটা সেট আপ করেছেন, আপনি টেনসরফ্লো এস্টিমেটর ব্যবহার করে একটি মডেল নির্ধারণ করতে পারেন। একটি এস্টিমেটর হল tf.estimator.Estimator থেকে প্রাপ্ত যেকোনো শ্রেণী। TensorFlow সাধারণ ML অ্যালগরিদম বাস্তবায়নের জন্য tf.estimator (উদাহরণস্বরূপ, LinearRegressor ) এর একটি সংগ্রহ প্রদান করে। এর বাইরে, আপনি আপনার নিজস্ব কাস্টম এস্টিমেটর লিখতে পারেন। সবে শুরু করার সময় পূর্ব-তৈরি আনুমানিক ব্যবহার করার পরামর্শ দেওয়া হয়।

পূর্ব-তৈরি অনুমানকারীদের উপর ভিত্তি করে একটি টেনসরফ্লো প্রোগ্রাম লিখতে, আপনাকে অবশ্যই নিম্নলিখিত কাজগুলি সম্পাদন করতে হবে:

  • এক বা একাধিক ইনপুট ফাংশন তৈরি করুন।
  • মডেলের বৈশিষ্ট্য কলাম সংজ্ঞায়িত করুন.
  • বৈশিষ্ট্য কলাম এবং বিভিন্ন হাইপারপ্যারামিটার নির্দিষ্ট করে একটি অনুমানকারীকে ইনস্ট্যান্টিয়েট করুন।
  • এস্টিমেটর অবজেক্টে এক বা একাধিক পদ্ধতি কল করুন, ডেটার উত্স হিসাবে উপযুক্ত ইনপুট ফাংশন পাস করে।

আইরিস শ্রেণীবিভাগের জন্য সেই কাজগুলি কীভাবে বাস্তবায়িত হয় তা দেখা যাক।

ইনপুট ফাংশন তৈরি করুন

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

একটি ইনপুট ফাংশন হল একটি ফাংশন যা একটি tf.data.Dataset অবজেক্ট প্রদান করে যা নিম্নলিখিত দুটি-উপাদানের টিপলকে আউটপুট করে:

  • features - একটি পাইথন অভিধান যাতে:
    • প্রতিটি কী একটি বৈশিষ্ট্যের নাম।
    • প্রতিটি মান হল সেই বৈশিষ্ট্যের সমস্ত মান ধারণকারী একটি অ্যারে।
  • label - প্রতিটি উদাহরণের জন্য লেবেলের মান ধারণকারী একটি অ্যারে।

শুধু ইনপুট ফাংশনের বিন্যাস প্রদর্শন করতে, এখানে একটি সহজ বাস্তবায়ন:

def input_evaluation_set():
    features = {'SepalLength': np.array([6.4, 5.0]),
                'SepalWidth':  np.array([2.8, 2.3]),
                'PetalLength': np.array([5.6, 3.3]),
                'PetalWidth':  np.array([2.2, 1.0])}
    labels = np.array([2, 1])
    return features, labels

আপনার ইনপুট ফাংশন features অভিধান এবং label তালিকা আপনি যে কোনো উপায়ে তৈরি করতে পারে. যাইহোক, এটি TensorFlow এর ডেটাসেট API ব্যবহার করার পরামর্শ দেওয়া হয়, যা সমস্ত ধরণের ডেটা পার্স করতে পারে।

ডেটাসেট API আপনার জন্য অনেক সাধারণ কেস পরিচালনা করতে পারে। উদাহরণস্বরূপ, ডেটাসেট API ব্যবহার করে, আপনি সহজেই সমান্তরালভাবে ফাইলগুলির একটি বৃহৎ সংগ্রহ থেকে রেকর্ডগুলিতে পড়তে পারেন এবং সেগুলিকে একটি একক স্ট্রীমে যুক্ত করতে পারেন।

এই উদাহরণে জিনিসগুলি সহজ রাখতে আপনি pandas দিয়ে ডেটা লোড করতে যাচ্ছেন এবং এই ইন-মেমরি ডেটা থেকে একটি ইনপুট পাইপলাইন তৈরি করতে যাচ্ছেন:

def input_fn(features, labels, training=True, batch_size=256):
    """An input function for training or evaluating"""
    # Convert the inputs to a Dataset.
    dataset = tf.data.Dataset.from_tensor_slices((dict(features), labels))

    # Shuffle and repeat if you are in training mode.
    if training:
        dataset = dataset.shuffle(1000).repeat()

    return dataset.batch(batch_size)

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

একটি বৈশিষ্ট্য কলাম হল একটি বস্তু যা বর্ণনা করে যে কীভাবে মডেলটি বৈশিষ্ট্য অভিধান থেকে কাঁচা ইনপুট ডেটা ব্যবহার করবে। আপনি যখন একটি আনুমানিক মডেল তৈরি করেন, আপনি এটিকে বৈশিষ্ট্য কলামগুলির একটি তালিকা পাস করেন যা মডেলটিকে ব্যবহার করতে চান এমন প্রতিটি বৈশিষ্ট্য বর্ণনা করে। tf.feature_column মডিউল মডেলটিতে ডেটা উপস্থাপন করার জন্য অনেকগুলি বিকল্প সরবরাহ করে।

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

# Feature columns describe how to use the input.
my_feature_columns = []
for key in train.keys():
    my_feature_columns.append(tf.feature_column.numeric_column(key=key))

ফিচার কলাম এখানে দেখানোর চেয়ে অনেক বেশি পরিশীলিত হতে পারে। আপনি এই নির্দেশিকায় বৈশিষ্ট্য কলাম সম্পর্কে আরও পড়তে পারেন।

এখন আপনার কাছে বর্ণনা আছে যে আপনি মডেলটিকে কীভাবে অশোধিত বৈশিষ্ট্যগুলি উপস্থাপন করতে চান, আপনি অনুমানকারী তৈরি করতে পারেন।

একটি অনুমানকারী তাত্ক্ষণিক

আইরিস সমস্যা একটি ক্লাসিক শ্রেণীবিভাগ সমস্যা। সৌভাগ্যবশত, TensorFlow বেশ কিছু পূর্ব-তৈরি ক্লাসিফায়ার এস্টিমেটর প্রদান করে, যার মধ্যে রয়েছে:

  • tf.estimator.DNNClassifier গভীর মডেলের জন্য যা বহু-শ্রেণীর শ্রেণীবিভাগ সম্পাদন করে।
  • tf.estimator.DNNLinearCombinedClassifier প্রশস্ত এবং গভীর মডেলের জন্য।
  • tf.estimator.LinearClassifier রৈখিক মডেলের উপর ভিত্তি করে শ্রেণিবিন্যাসকারীদের জন্য।

আইরিস সমস্যার জন্য, tf.estimator.DNNClassifier সেরা পছন্দ বলে মনে হচ্ছে। আপনি এই অনুমানকারীকে কীভাবে ইনস্ট্যান্ট করেছেন তা এখানে রয়েছে:

# Build a DNN with 2 hidden layers with 30 and 10 hidden nodes each.
classifier = tf.estimator.DNNClassifier(
    feature_columns=my_feature_columns,
    # Two hidden layers of 30 and 10 nodes respectively.
    hidden_units=[30, 10],
    # The model must choose between 3 classes.
    n_classes=3)
INFO:tensorflow:Using default config.
WARNING:tensorflow:Using temporary folder as model directory: /tmp/tmpxdgumb2t
INFO:tensorflow:Using config: {'_model_dir': '/tmp/tmpxdgumb2t', '_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}

ট্রেন, মূল্যায়ন, এবং ভবিষ্যদ্বাণী

এখন আপনার কাছে একটি এস্টিমেটর অবজেক্ট আছে, আপনি নিম্নলিখিতগুলি করতে পদ্ধতিগুলি কল করতে পারেন:

  • মডেলকে প্রশিক্ষণ দিন।
  • প্রশিক্ষিত মডেল মূল্যায়ন.
  • ভবিষ্যদ্বাণী করতে প্রশিক্ষিত মডেল ব্যবহার করুন.

মডেলকে প্রশিক্ষণ দিন

অনুমানকারীর train পদ্ধতিটি নিম্নরূপ কল করে মডেলটিকে প্রশিক্ষণ দিন:

# Train the Model.
classifier.train(
    input_fn=lambda: input_fn(train, train_y, training=True),
    steps=5000)
WARNING:tensorflow:From /tmpfs/src/tf_docs_env/lib/python3.7/site-packages/tensorflow/python/training/training_util.py:397: 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/keras/optimizer_v2/adagrad.py:84: 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/tmpxdgumb2t/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 0...
INFO:tensorflow:loss = 1.6787335, step = 0
INFO:tensorflow:global_step/sec: 305.625
INFO:tensorflow:loss = 1.1945828, step = 100 (0.328 sec)
INFO:tensorflow:global_step/sec: 375.48
INFO:tensorflow:loss = 1.0221117, step = 200 (0.266 sec)
INFO:tensorflow:global_step/sec: 376.21
INFO:tensorflow:loss = 0.9240805, step = 300 (0.266 sec)
INFO:tensorflow:global_step/sec: 377.968
INFO:tensorflow:loss = 0.85917354, step = 400 (0.265 sec)
INFO:tensorflow:global_step/sec: 376.297
INFO:tensorflow:loss = 0.81545967, step = 500 (0.265 sec)
INFO:tensorflow:global_step/sec: 367.549
INFO:tensorflow:loss = 0.7771524, step = 600 (0.272 sec)
INFO:tensorflow:global_step/sec: 378.887
INFO:tensorflow:loss = 0.74371505, step = 700 (0.264 sec)
INFO:tensorflow:global_step/sec: 379.26
INFO:tensorflow:loss = 0.717993, step = 800 (0.264 sec)
INFO:tensorflow:global_step/sec: 370.102
INFO:tensorflow:loss = 0.6952705, step = 900 (0.270 sec)
INFO:tensorflow:global_step/sec: 373.034
INFO:tensorflow:loss = 0.68044865, step = 1000 (0.268 sec)
INFO:tensorflow:global_step/sec: 372.193
INFO:tensorflow:loss = 0.65181077, step = 1100 (0.269 sec)
INFO:tensorflow:global_step/sec: 339.238
INFO:tensorflow:loss = 0.6319051, step = 1200 (0.295 sec)
INFO:tensorflow:global_step/sec: 334.252
INFO:tensorflow:loss = 0.63433766, step = 1300 (0.299 sec)
INFO:tensorflow:global_step/sec: 343.436
INFO:tensorflow:loss = 0.61748827, step = 1400 (0.291 sec)
INFO:tensorflow:global_step/sec: 346.575
INFO:tensorflow:loss = 0.606356, step = 1500 (0.288 sec)
INFO:tensorflow:global_step/sec: 351.362
INFO:tensorflow:loss = 0.59807724, step = 1600 (0.285 sec)
INFO:tensorflow:global_step/sec: 366.628
INFO:tensorflow:loss = 0.5832784, step = 1700 (0.273 sec)
INFO:tensorflow:global_step/sec: 367.034
INFO:tensorflow:loss = 0.5664347, step = 1800 (0.273 sec)
INFO:tensorflow:global_step/sec: 372.339
INFO:tensorflow:loss = 0.5684726, step = 1900 (0.268 sec)
INFO:tensorflow:global_step/sec: 368.957
INFO:tensorflow:loss = 0.56011164, step = 2000 (0.271 sec)
INFO:tensorflow:global_step/sec: 373.128
INFO:tensorflow:loss = 0.5483226, step = 2100 (0.268 sec)
INFO:tensorflow:global_step/sec: 377.334
INFO:tensorflow:loss = 0.5447233, step = 2200 (0.265 sec)
INFO:tensorflow:global_step/sec: 370.421
INFO:tensorflow:loss = 0.5358016, step = 2300 (0.270 sec)
INFO:tensorflow:global_step/sec: 367.076
INFO:tensorflow:loss = 0.53145075, step = 2400 (0.273 sec)
INFO:tensorflow:global_step/sec: 373.596
INFO:tensorflow:loss = 0.50931674, step = 2500 (0.268 sec)
INFO:tensorflow:global_step/sec: 368.939
INFO:tensorflow:loss = 0.5253717, step = 2600 (0.271 sec)
INFO:tensorflow:global_step/sec: 354.814
INFO:tensorflow:loss = 0.52558273, step = 2700 (0.282 sec)
INFO:tensorflow:global_step/sec: 372.243
INFO:tensorflow:loss = 0.51422054, step = 2800 (0.269 sec)
INFO:tensorflow:global_step/sec: 366.891
INFO:tensorflow:loss = 0.49747026, step = 2900 (0.272 sec)
INFO:tensorflow:global_step/sec: 370.952
INFO:tensorflow:loss = 0.49974674, step = 3000 (0.270 sec)
INFO:tensorflow:global_step/sec: 364.158
INFO:tensorflow:loss = 0.4978399, step = 3100 (0.275 sec)
INFO:tensorflow:global_step/sec: 365.383
INFO:tensorflow:loss = 0.5030147, step = 3200 (0.273 sec)
INFO:tensorflow:global_step/sec: 366.791
INFO:tensorflow:loss = 0.4772169, step = 3300 (0.273 sec)
INFO:tensorflow:global_step/sec: 372.438
INFO:tensorflow:loss = 0.46993533, step = 3400 (0.269 sec)
INFO:tensorflow:global_step/sec: 371.25
INFO:tensorflow:loss = 0.47242266, step = 3500 (0.269 sec)
INFO:tensorflow:global_step/sec: 369.725
INFO:tensorflow:loss = 0.46513358, step = 3600 (0.271 sec)
INFO:tensorflow:global_step/sec: 371.002
INFO:tensorflow:loss = 0.4762191, step = 3700 (0.270 sec)
INFO:tensorflow:global_step/sec: 369.304
INFO:tensorflow:loss = 0.44923267, step = 3800 (0.271 sec)
INFO:tensorflow:global_step/sec: 369.344
INFO:tensorflow:loss = 0.45467538, step = 3900 (0.271 sec)
INFO:tensorflow:global_step/sec: 375.58
INFO:tensorflow:loss = 0.46056622, step = 4000 (0.266 sec)
INFO:tensorflow:global_step/sec: 347.461
INFO:tensorflow:loss = 0.4489282, step = 4100 (0.288 sec)
INFO:tensorflow:global_step/sec: 368.435
INFO:tensorflow:loss = 0.45647347, step = 4200 (0.272 sec)
INFO:tensorflow:global_step/sec: 369.159
INFO:tensorflow:loss = 0.4444633, step = 4300 (0.271 sec)
INFO:tensorflow:global_step/sec: 371.995
INFO:tensorflow:loss = 0.44425523, step = 4400 (0.269 sec)
INFO:tensorflow:global_step/sec: 373.586
INFO:tensorflow:loss = 0.44025964, step = 4500 (0.268 sec)
INFO:tensorflow:global_step/sec: 373.136
INFO:tensorflow:loss = 0.44341013, step = 4600 (0.269 sec)
INFO:tensorflow:global_step/sec: 369.751
INFO:tensorflow:loss = 0.42856425, step = 4700 (0.269 sec)
INFO:tensorflow:global_step/sec: 364.219
INFO:tensorflow:loss = 0.44144967, step = 4800 (0.275 sec)
INFO:tensorflow:global_step/sec: 372.675
INFO:tensorflow:loss = 0.42951846, step = 4900 (0.268 sec)
INFO:tensorflow:Calling checkpoint listeners before saving checkpoint 5000...
INFO:tensorflow:Saving checkpoints for 5000 into /tmp/tmpxdgumb2t/model.ckpt.
INFO:tensorflow:Calling checkpoint listeners after saving checkpoint 5000...
INFO:tensorflow:Loss for final step: 0.42713496.
<tensorflow_estimator.python.estimator.canned.dnn.DNNClassifierV2 at 0x7fad05e33910>

মনে রাখবেন যে আপনি আপনার input_fn কলটি একটি lambda -তে গুটিয়ে রাখেন এবং একটি ইনপুট ফাংশন প্রদান করার সময় আর্গুমেন্ট ক্যাপচার করেন যেটি কোনো আর্গুমেন্ট নেয় না, অনুমানকারীর প্রত্যাশা অনুযায়ী। steps আর্গুমেন্টটি বেশ কয়েকটি প্রশিক্ষণের ধাপের পর প্রশিক্ষণ বন্ধ করার পদ্ধতিকে বলে।

প্রশিক্ষিত মডেল মূল্যায়ন

এখন যেহেতু মডেলটি প্রশিক্ষিত হয়েছে, আপনি এর কার্যকারিতার কিছু পরিসংখ্যান পেতে পারেন। নিম্নলিখিত কোড ব্লক পরীক্ষার ডেটাতে প্রশিক্ষিত মডেলের যথার্থতা মূল্যায়ন করে:

eval_result = classifier.evaluate(
    input_fn=lambda: input_fn(test, test_y, training=False))

print('\nTest set accuracy: {accuracy:0.3f}\n'.format(**eval_result))
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Starting evaluation at 2022-01-26T06:41:28
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpxdgumb2t/model.ckpt-5000
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
INFO:tensorflow:Inference Time : 0.40087s
INFO:tensorflow:Finished evaluation at 2022-01-26-06:41:28
INFO:tensorflow:Saving dict for global step 5000: accuracy = 0.8666667, average_loss = 0.49953422, global_step = 5000, loss = 0.49953422
INFO:tensorflow:Saving 'checkpoint_path' summary for global step 5000: /tmp/tmpxdgumb2t/model.ckpt-5000

Test set accuracy: 0.867

train পদ্ধতিতে কলের বিপরীতে, আপনি মূল্যায়ন করার জন্য steps যুক্তি পাস করেননি। ইভালের জন্য input_fn শুধুমাত্র ডেটার একটি একক যুগ উৎপন্ন করে।

eval_result অভিধানে average_loss (নমুনা প্রতি গড় ক্ষতি), loss (মানে প্রতি মিনি-ব্যাচের ক্ষতি) এবং অনুমানকারীর global_step মান (প্রশিক্ষণের পুনরাবৃত্তির সংখ্যা) রয়েছে।

প্রশিক্ষিত মডেল থেকে ভবিষ্যদ্বাণী করা (অনুমান করা)

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

# Generate predictions from the model
expected = ['Setosa', 'Versicolor', 'Virginica']
predict_x = {
    'SepalLength': [5.1, 5.9, 6.9],
    'SepalWidth': [3.3, 3.0, 3.1],
    'PetalLength': [1.7, 4.2, 5.4],
    'PetalWidth': [0.5, 1.5, 2.1],
}

def input_fn(features, batch_size=256):
    """An input function for prediction."""
    # Convert the inputs to a Dataset without labels.
    return tf.data.Dataset.from_tensor_slices(dict(features)).batch(batch_size)

predictions = classifier.predict(
    input_fn=lambda: input_fn(predict_x))

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

for pred_dict, expec in zip(predictions, expected):
    class_id = pred_dict['class_ids'][0]
    probability = pred_dict['probabilities'][class_id]

    print('Prediction is "{}" ({:.1f}%), expected "{}"'.format(
        SPECIES[class_id], 100 * probability, expec))
INFO:tensorflow:Calling model_fn.
INFO:tensorflow:Done calling model_fn.
INFO:tensorflow:Graph was finalized.
INFO:tensorflow:Restoring parameters from /tmp/tmpxdgumb2t/model.ckpt-5000
INFO:tensorflow:Running local_init_op.
INFO:tensorflow:Done running local_init_op.
Prediction is "Setosa" (84.4%), expected "Setosa"
Prediction is "Versicolor" (49.3%), expected "Versicolor"
Prediction is "Virginica" (57.7%), expected "Virginica"