• A quick complete tutorial to save and restore Tensorflow models

    Tensorflow মডেল সংরক্ষণ এবং পুনরুদ্ধার করার জন্য একটি দ্রুত সম্পূর্ণ টিউটোরিয়াল
    এই Tensorflow টিউটোরিয়াল, আমি ব্যাখ্যা করব:
    1. How does a Tensorflow model look like?
    2. How to save a Tensorflow model?
    3. How to restore a Tensorflow model for prediction/transfer learning?
    4. How to work with imported pretrained models for fine-tuning and modification
    এই টিউটোরিয়াল অনুমান করে যে আপনার স্নায়ু নেটওয়ার্ক প্রশিক্ষণ সম্পর্কে কিছু ধারণা আছে। অন্যথায়, এই টিউটোরিয়াল অনুসরণ করুন এবং এখানে ফিরে আসা।

    1. একটি Tensorflow মডেল কি ?:

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

    একটি) মেটা গ্রাফ:Meta graph:

    এটি একটি প্রোটোকল বাফার যা সম্পূর্ণ Tensorflow গ্রাফ সংরক্ষণ করে; অর্থাৎ সব ভেরিয়েবল, অপারেশনস, সংগ্রহ ইত্যাদি। এই ফাইলটিতে । মেটা এক্সটেনশান রয়েছে।

    খ) চেকপয়েন্ট ফাইল:

    এটি একটি বাইনারি ফাইল যা ওজন, পক্ষপাত, গ্রেডিয়েন্ট এবং সমস্ত অন্যান্য পরিবর্তনগুলি সংরক্ষণ করে থাকে। এই ফাইল একটি এক্সটেনশান আছে। ckpt। যাইহোক, Tensorflow সংস্করণ 0.11 থেকে এই পরিবর্তন করা হয়েছে। এখন, একক .ckpt ফাইলের পরিবর্তে, আমাদের দুটি ফাইল রয়েছে:
    .data ফাইলটি এমন ফাইল যা আমাদের প্রশিক্ষণ ভেরিয়েবল ধারণ করে এবং আমরা এটির পরে যাব।
    এর পাশাপাশি, টেনসফ্লোও একটি চেকপয়েন্ট নামক একটি ফাইল রয়েছে যা কেবলমাত্র সংরক্ষণযোগ্য সর্বশেষ চেকপয়েন্ট ফাইলগুলির রেকর্ড রাখে।
    সুতরাং, সংক্ষেপে, 0.10 এর চেয়েও বেশি সংস্করণগুলির জন্য টেনসফ্লোও মডেলগুলি এইরকম দেখায়:
    Tensorflow টিউটোরিয়াল
    0.11 এর আগে Tensorflow মডেলটিতে কেবলমাত্র তিনটি ফাইল রয়েছে:
    এখন আমরা জানি কিভাবে একটি টেনসফ্লোও মডেল দেখায়, মডেলটি কীভাবে সংরক্ষণ করবেন তা শিখুন।

    2. একটি Tensorflow মডেল সংরক্ষণ করা হচ্ছে:

    বলুন, আপনি ইমেজ শ্রেণীবিভাগ জন্য একটি convolutional স্নায়ু নেটওয়ার্ক প্রশিক্ষণ করা হয় । একটি আদর্শ অভ্যাস হিসাবে, আপনি ক্ষতি এবং নির্ভুলতা সংখ্যা উপর একটি ঘড়ি রাখুন। একবার নেটওয়ার্কটি একত্রিত হয়ে গেলে আপনি নিজে প্রশিক্ষণটি বন্ধ করতে পারেন অথবা আপনি নির্দিষ্ট সংখ্যক পর্বের জন্য প্রশিক্ষণটি চালাতে পারবেন। প্রশিক্ষণ শেষ হওয়ার পর, আমরা ভবিষ্যতে ব্যবহারের জন্য একটি ফাইলের সমস্ত ভেরিয়েবল এবং নেটওয়ার্ক গ্রাফ সংরক্ষণ করতে চাই। সুতরাং, টেনসফ্লোতে, আপনি সমস্ত প্যারামিটারের গ্রাফ এবং মান সংরক্ষণ করতে চান যার জন্য আমরা tf.train.Saver () ক্লাসের একটি উদাহরণ তৈরি করব।
    saver = tf.train.Saver()
    মনে রাখবেন যে Tensorflow ভেরিয়েবল শুধুমাত্র একটি অধিবেশন মধ্যে জীবিত। সুতরাং, আপনি কেবলমাত্র তৈরি করা সেভার অবজেক্টের সংরক্ষণ পদ্ধতি কল করে একটি সেশনের ভিতরে মডেলটি সংরক্ষণ করতে হবে।
    এখানে, sess হল session object, যখন 'my-test-model' নামটি আপনার মডেলটি দিতে চান। আসুন একটি সম্পূর্ণ উদাহরণ দেখুন:
    আমরা 1000 পুনরাবৃত্তির পরে মডেলটি সংরক্ষণ করছি, আমরা পদক্ষেপ গণনা পাস করে সংরক্ষণ করব:
    saver.save(sess, 'my_test_model',global_step=1000)
    এটি কেবল মডেল নামতে '-1000' যুক্ত করবে এবং নিম্নলিখিত ফাইল তৈরি করা হবে:
    চলুন, প্রশিক্ষণ দেওয়ার সময়, প্রতি 1000 পুনরাবৃত্তির পর আমরা আমাদের মডেলটি সংরক্ষণ করছি, তাই। মেটা ফাইলটি প্রথমবার (1000 তম পুনরাবৃত্তি) তৈরি করা হয় এবং আমাদের প্রতিটি সময়। মেটা ফাইলটি পুনরায় তৈরি করতে হবে না। 2000, 3000 .. বা অন্য কোন পুনরাবৃত্তি এ। মেটা ফাইল সংরক্ষণ করুন। গ্রাফ পরিবর্তিত হবে না, আমরা শুধুমাত্র আরও পুনরাবৃত্তি জন্য মডেল সংরক্ষণ করুন। অতএব, যখন আমরা মেটা-গ্রাফ লিখতে চাই না তখন আমরা এটি ব্যবহার করি:
    যদি আপনি শুধুমাত্র 4 টি সর্বশেষ মডেল রাখতে চান এবং প্রশিক্ষণের সময় প্রতি 2 ঘন্টা পরে একটি মডেল সংরক্ষণ করতে চান তবে আপনি max_to_keep এবং keep_checkpoint_every_n_hours ব্যবহার করতে পারেন।

    দ্রষ্টব্য, যদি আমরা tf.train.Saver () তে কিছু উল্লেখ না করি, এটি সমস্ত ভেরিয়েবল সংরক্ষণ করে । কি হবে, আমরা সব ভেরিয়েবল এবং কিছু তাদের সংরক্ষণ করতে চান না। আমরা সংরক্ষণ করতে চান ভেরিয়েবল / সংগ্রহ উল্লেখ করতে পারেন। Tf.train.Saver উদাহরণ তৈরি করার সময় আমরা এটি একটি তালিকা বা ভেরিয়েবলের একটি অভিধান পাস করি যা আমরা সংরক্ষণ করতে চাই। এর একটি উদাহরণ তাকান যাক:
    এটি প্রয়োজন হলে Tensorflow গ্রাফ নির্দিষ্ট অংশ সংরক্ষণ করতে ব্যবহার করা যেতে পারে।

    3. একটি প্রাক প্রশিক্ষিত মডেল আমদানি:

    যদি আপনি সূক্ষ্ম-সুরকরণের জন্য অন্যের প্রাক-প্রশিক্ষিত মডেলটি ব্যবহার করতে চান তবে আপনাকে দুটি জিনিস করতে হবে:

    একটি) নেটওয়ার্ক তৈরি করুন:

    আপনি প্রতিটি মডেলটিকে মূল মডেল হিসাবে ম্যানুয়ালি তৈরি করতে পিওথন কোড লিখে নেটওয়ার্ক তৈরি করতে পারেন। যাইহোক, যদি আপনি এটি সম্পর্কে চিন্তা করেন তবে আমরা .meta ফাইলে নেটওয়ার্কটি সংরক্ষণ করেছি যা আমরা tf.train.import () ফাংশন ব্যবহার করে নেটওয়ার্কটি পুনঃসেট করতে ব্যবহার করতে পারি:saver = tf.train.import_meta_graph('my_test_model-1000.meta')
    মনে রাখবেন, import_meta_graph বর্তমান গ্রাফে। মেটা ফাইলে সংজ্ঞায়িত নেটওয়ার্ক যুক্ত করে। সুতরাং, এটি আপনার জন্য গ্রাফ / নেটওয়ার্ক তৈরি করবে তবে আমাদের এই গ্রাফে প্রশিক্ষণপ্রাপ্ত পরামিতিগুলির মান লোড করতে হবে।

    খ) পরামিতি লোড করুন:

    Tf.train.Saver () ক্লাসের একটি উদাহরণ যা এই সেভারে পুনরুদ্ধার কল করে আমরা নেটওয়ার্কগুলির পরামিতিগুলি পুনরুদ্ধার করতে পারি।
    এর পর, w1 এবং w2 মত টেন্সরগুলির মান পুনরুদ্ধার করা হয়েছে এবং অ্যাক্সেস করা যেতে পারে:
    সুতরাং, এখন আপনি বুঝতে পেরেছেন কিভাবে টেনসফ্লো মডেলের জন্য সংরক্ষণ এবং আমদানি করা হয়। পরবর্তী বিভাগে, আমি কোন প্রাক প্রশিক্ষিত মডেল লোড করার জন্য উপরে একটি ব্যবহারিক ব্যবহার বর্ণনা করা হয়েছে।

    4. পুনরুদ্ধার মডেল সঙ্গে কাজ

    এখন আপনি কিভাবে Tensorflow মডেলগুলি সংরক্ষণ এবং পুনরুদ্ধার করবেন তা বোঝেন, আসুন প্রাক প্রশিক্ষিত মডেলটি পুনরুদ্ধার করতে এবং ভবিষ্যদ্বাণী, জরিমানা বা আরও প্রশিক্ষণের জন্য এটি ব্যবহার করার জন্য একটি ব্যবহারিক নির্দেশিকা বিকাশ করি। যখনই আপনি টেসফোর্ভ সঙ্গে কাজ করছেন, আপনি একটি গ্রাফ সংজ্ঞায়িত করেন যা খাওয়ানো উদাহরণ (প্রশিক্ষণ তথ্য) এবং শেখার হার, বিশ্বব্যাপী ধাপ ইত্যাদির মতো কিছু হাইপারপার্মিটারগুলিকে সংজ্ঞায়িত করে। এটি স্থানধারক ব্যবহার করে সমস্ত প্রশিক্ষণ ডেটা এবং হাইপারপ্যাটার্স ফিড করার একটি আদর্শ অনুশীলন। আসুন স্থানধারক ব্যবহার করে একটি ছোট নেটওয়ার্ক নির্মাণ এবং এটি সংরক্ষণ করুন। নোট করুন যখন নেটওয়ার্ক সংরক্ষিত হয়, স্থানধারকগুলির মানগুলি সংরক্ষণ করা হয় না।
    এখন, আমরা এটি পুনরুদ্ধার করতে চাইলে, আমাদের কেবল গ্রাফ ও ওজনগুলি পুনরুদ্ধার করতে হবে না, তবে একটি নতুন feed_dict তৈরি করতে হবে যা নেটওয়ার্কগুলিতে নতুন প্রশিক্ষণ তথ্য সরবরাহ করবে। আমরা graph.get_tensor_by_name () পদ্ধতির মাধ্যমে এই সংরক্ষিত ক্রিয়াকলাপগুলি এবং স্থানধারক ভেরিয়েবলের রেফারেন্স পেতে পারি 
    আমরা যদি একই নেটওয়ার্কের সাথে একই ডাটা চালাতে চাই তবে আপনি কেবলমাত্র feed_dict এর মাধ্যমে নেটওয়ার্কে নতুন ডেটা পাস করতে পারেন।
    আপনি যদি আরও স্তর যুক্ত করে গ্রাফে আরো ক্রিয়াকলাপ যুক্ত করতে চান এবং তারপরে এটি ট্রেন করতে চান তবে কী হবে। অবশ্যই আপনি যে খুব করতে পারেন। এখানে দেখো:
    কিন্তু, আপনি পুরানো গ্রাফের অংশটি পুনরুদ্ধার করতে পারেন এবং সূক্ষ্ম-সুরকরণের জন্য এটিকে অ্যাড-অন করতে পারেন? অবশ্যই আপনি, graph.get_tensor_by_name () পদ্ধতি দ্বারা যথাযথ ক্রিয়াকলাপটি অ্যাক্সেস করতে পারেন এবং তার উপরে গ্রাফ তৈরি করতে পারেন। এখানে একটি বাস্তব বিশ্বের উদাহরণ। এখানে আমরা মেটা গ্রাফ ব্যবহার করে একটি ভিএজি প্রাক প্রশিক্ষিত নেটওয়ার্ক লোড এবং নতুন ডাটা দিয়ে সূক্ষ্ম-টিউন করার জন্য শেষ স্তরের আউটপুট সংখ্যা 2 এ পরিবর্তন করুন।
    আশা করছি, এটি আপনাকে Tensorflow মডেলগুলি কীভাবে সংরক্ষিত এবং পুনরুদ্ধার করা হবে তা সম্পর্কে খুব স্পষ্ট বোঝা দেয়। মন্তব্য বিভাগে আপনার প্রশ্ন বা সন্দেহ শেয়ার করুন বিনা দ্বিধায় দয়া করে।


























































  • 0 comments:

    Post a Comment

    New Research

    Attention Mechanism Based Multi Feature Fusion Forest for Hyperspectral Image Classification.

    CBS-GAN: A Band Selection Based Generative Adversarial Net for Hyperspectral Sample Generation.

    Multi-feature Fusion based Deep Forest for Hyperspectral Image Classification.

    ADDRESS

    388 Lumo Rd, Hongshan, Wuhan, Hubei, China

    EMAIL

    contact-m.zamanb@yahoo.com
    mostofa.zaman@cug.edu.cn

    TELEPHONE

    #
    #

    MOBILE

    +8615527370302,
    +8807171546477