নতুনদের জন্য TensorFlow 2 কুইকস্টার্ট

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

এই সংক্ষিপ্ত ভূমিকা কেরাস ব্যবহার করে:

  1. একটি পূর্বনির্মাণ ডেটাসেট লোড করুন।
  2. একটি নিউরাল নেটওয়ার্ক মেশিন লার্নিং মডেল তৈরি করুন যা চিত্রগুলিকে শ্রেণীবদ্ধ করে।
  3. এই নিউরাল নেটওয়ার্ককে প্রশিক্ষণ দিন।
  4. মডেলের নির্ভুলতা মূল্যায়ন করুন।

এই টিউটোরিয়ালটি একটি Google Colaboratory নোটবুক। পাইথন প্রোগ্রামগুলি সরাসরি ব্রাউজারে চালানো হয় - টেনসরফ্লো শেখার এবং ব্যবহার করার একটি দুর্দান্ত উপায়। এই টিউটোরিয়ালটি অনুসরণ করতে, এই পৃষ্ঠার উপরের বোতামে ক্লিক করে Google Colab-এ নোটবুকটি চালান।

  1. Colab-এ, Python রানটাইমের সাথে কানেক্ট করুন: মেনু বারের উপরে ডানদিকে, CONNECT নির্বাচন করুন।
  2. সমস্ত নোটবুক কোড সেল চালান: রানটাইম > সমস্ত চালান নির্বাচন করুন।

TensorFlow সেট আপ করুন

শুরু করতে আপনার প্রোগ্রামে TensorFlow আমদানি করুন:

import tensorflow as tf
print("TensorFlow version:", tf.__version__)
TensorFlow version: 2.8.0-rc1

আপনি Colab- এর পরিবর্তে আপনার নিজের ডেভেলপমেন্ট এনভায়রনমেন্ট অনুসরণ করলে, ডেভেলপমেন্টের জন্য TensorFlow সেট-আপ করার জন্য ইনস্টল গাইড দেখুন।

একটি ডেটাসেট লোড করুন

MNIST ডেটাসেট লোড করুন এবং প্রস্তুত করুন। নমুনা ডেটাকে পূর্ণসংখ্যা থেকে ফ্লোটিং-পয়েন্ট সংখ্যায় রূপান্তর করুন:

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

একটি মেশিন লার্নিং মডেল তৈরি করুন

স্তরগুলি স্ট্যাক করে একটি tf.keras.Sequential মডেল তৈরি করুন।

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

প্রতিটি উদাহরণের জন্য, মডেলটি লজিট বা লগ- অডস স্কোরের একটি ভেক্টর প্রদান করে, প্রতিটি শ্রেণীর জন্য একটি।

predictions = model(x_train[:1]).numpy()
predictions
array([[ 0.2760778 , -0.39324787, -0.17098302,  1.2016621 , -0.03416392,
         0.5461229 , -0.7203061 , -0.41886678, -0.59480035, -0.7580608 ]],
      dtype=float32)

tf.nn.softmax ফাংশন প্রতিটি শ্রেণীর জন্য এই লগিটগুলিকে সম্ভাব্যতায় রূপান্তর করে:

tf.nn.softmax(predictions).numpy()
array([[0.11960829, 0.06124588, 0.0764901 , 0.30181262, 0.08770514,
        0.15668967, 0.04416083, 0.05969675, 0.05006609, 0.04252464]],
      dtype=float32)

losses.SparseCategoricalCrossentropy ব্যবহার করে প্রশিক্ষণের জন্য একটি ক্ষতির ফাংশন সংজ্ঞায়িত করুন, যা লজিটের একটি ভেক্টর এবং একটি True সূচক নেয় এবং প্রতিটি উদাহরণের জন্য একটি স্কেলার ক্ষতি প্রদান করে।

loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)

এই ক্ষতি সত্য শ্রেণীর নেতিবাচক লগ সম্ভাবনার সমান: যদি মডেলটি সঠিক শ্রেণীর সম্পর্কে নিশ্চিত হয় তবে ক্ষতি শূন্য হয়।

এই অপ্রশিক্ষিত মডেলটি র্যান্ডম (প্রতিটি শ্রেণীর জন্য 1/10) এর কাছাকাছি সম্ভাব্যতা দেয়, তাই প্রাথমিক ক্ষতি -tf.math.log(1/10) ~= 2.3 কাছাকাছি হওয়া উচিত।

loss_fn(y_train[:1], predictions).numpy()
1.8534881

আপনি প্রশিক্ষণ শুরু করার আগে, Model.compile ব্যবহার করে মডেলটি কনফিগার এবং কম্পাইল করুন। optimizer ক্লাসটি adam সেট করুন, loss আপনার পূর্বে সংজ্ঞায়িত করা loss_fn ফাংশনে সেট করুন এবং metrics প্যারামিটারটিকে accuracy সেট করে মডেলের জন্য মূল্যায়ন করার জন্য একটি মেট্রিক নির্দিষ্ট করুন।

model.compile(optimizer='adam',
              loss=loss_fn,
              metrics=['accuracy'])

প্রশিক্ষণ এবং আপনার মডেল মূল্যায়ন

আপনার মডেল প্যারামিটারগুলি সামঞ্জস্য করতে এবং ক্ষতি কমাতে Model.fit পদ্ধতিটি ব্যবহার করুন:

model.fit(x_train, y_train, epochs=5)
Epoch 1/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.2950 - accuracy: 0.9143
Epoch 2/5
1875/1875 [==============================] - 3s 2ms/step - loss: 0.1451 - accuracy: 0.9567
Epoch 3/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.1080 - accuracy: 0.9668
Epoch 4/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0906 - accuracy: 0.9717
Epoch 5/5
1875/1875 [==============================] - 4s 2ms/step - loss: 0.0749 - accuracy: 0.9761
<keras.callbacks.History at 0x7f062c606850>

Model.evaluate পদ্ধতি মডেলের কর্মক্ষমতা পরীক্ষা করে, সাধারণত একটি " Validation-set " বা " Test-set " এ।

model.evaluate(x_test,  y_test, verbose=2)
313/313 - 1s - loss: 0.0783 - accuracy: 0.9755 - 588ms/epoch - 2ms/step
[0.07825208455324173, 0.9754999876022339]

ইমেজ ক্লাসিফায়ার এখন এই ডেটাসেটে ~98% নির্ভুলতার জন্য প্রশিক্ষিত। আরও জানতে, TensorFlow টিউটোরিয়াল পড়ুন।

আপনি যদি চান যে আপনার মডেলটি একটি সম্ভাব্যতা ফিরিয়ে আনুক, আপনি প্রশিক্ষিত মডেলটি মোড়ানো করতে পারেন এবং এতে সফটম্যাক্স সংযুক্ত করতে পারেন:

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
probability_model(x_test[:5])
<tf.Tensor: shape=(5, 10), dtype=float32, numpy=
array([[2.72807270e-08, 2.42517650e-08, 7.75602894e-06, 1.28684027e-04,
        7.66215633e-11, 3.54162950e-07, 3.04894151e-14, 9.99857187e-01,
        2.32766553e-08, 5.97762892e-06],
       [7.37396704e-08, 4.73638036e-04, 9.99523997e-01, 7.20633352e-07,
        4.54133671e-17, 1.42298268e-06, 5.96959016e-09, 1.23534145e-13,
        7.77225608e-08, 6.98619169e-16],
       [1.95462448e-07, 9.99295831e-01, 1.02249986e-04, 1.86699708e-05,
        5.65737491e-06, 1.12115902e-06, 5.32719559e-06, 5.22767776e-04,
        4.79981136e-05, 1.76624681e-07],
       [9.99649286e-01, 1.80224735e-09, 3.73612856e-05, 1.52324446e-07,
        1.30824594e-06, 2.82781020e-05, 6.99703523e-05, 3.30940424e-07,
        2.13184350e-07, 2.13106396e-04],
       [1.53770895e-06, 1.72272063e-08, 1.98980865e-06, 3.97882580e-08,
        9.97192323e-01, 1.10544443e-05, 1.54713348e-06, 2.81727880e-05,
        3.48721733e-06, 2.75991508e-03]], dtype=float32)>

উপসংহার

অভিনন্দন! আপনি কেরাস এপিআই ব্যবহার করে একটি প্রি-বিল্ট ডেটাসেট ব্যবহার করে একটি মেশিন লার্নিং মডেলকে প্রশিক্ষণ দিয়েছেন।

কেরাস ব্যবহারের আরও উদাহরণের জন্য, টিউটোরিয়ালগুলি দেখুন । কেরাসের সাথে মডেল তৈরি করার বিষয়ে আরও জানতে, গাইডগুলি পড়ুন। আপনি যদি ডেটা লোড করা এবং প্রস্তুত করার বিষয়ে আরও জানতে চান, তাহলে ইমেজ ডেটা লোডিং বা CSV ডেটা লোডিং -এর টিউটোরিয়ালগুলি দেখুন৷