আমি এখানে কিছু গল্পের সাথে পূর্বের সাবধানতার সাথে কয়েকটি শব্দ নিয়ে ওজন করতে পারি। অনেক আগে, যখন আমি সবে শুরু করছিলাম তখন আমি একজন সহকর্মীর সাথে কাজ করেছি। বরং একটি অগোছালো উদ্দেশ্য নিয়ে সমাধান করার জন্য তার একটি অপ্টিমাইজেশন সমস্যা ছিল। তার সমাধানটি ছিল একটি অপ্টিমাইজেশনের জন্য বিশ্লেষণী ডেরিভেটিভস তৈরি করা।
আমি যে সমস্যাটি দেখেছি তা হ'ল এই ডেরাইভেটিভগুলি কদর্য। ম্যাকসিমা ব্যবহার করে উত্পন্ন, ফোর্টরান কোডে রূপান্তরিত, এগুলি প্রতিটি ডজন ডজন ধারাবাহিক বিবৃতি ছিল। প্রকৃতপক্ষে, ফোর্টরান সংকলক এতে মন খারাপ করেছিল, কারণ এটি ধারাবাহিকতার বিবৃতি সর্বাধিক সংখ্যাকে ছাড়িয়ে গেছে। আমরা একটি পতাকা পেয়েছি যা আমাদের সেই সমস্যাটি ঘুরে দেখার অনুমতি দিয়েছে, সেখানে আরও কিছু সমস্যা ছিল।
দীর্ঘ অভিব্যক্তিগুলিতে, যেমন সিএ সিস্টেমগুলি দ্বারা উত্পাদিত হয়, সেখানে বৃহত্তর সাবট্র্যাকটিভ বাতিল হওয়ার ঝুঁকি রয়েছে। প্রচুর পরিমাণে গণনা করুন, কেবলমাত্র অল্প সংখ্যক ফল দেওয়ার জন্য তারা সবাই একে অপরকে বাতিল করে দেয় find
সীমাবদ্ধ পার্থক্য ব্যবহার করে সংখ্যাসূচকভাবে উত্পন্ন ডেরিভেটিভসের চেয়ে বিশ্লেষণগতভাবে উত্পন্ন ডেরিভেটিভসগুলি মূল্যায়নের জন্য আসলে আরও ব্যয়বহুল। এন ভেরিয়েবলের জন্য গ্রেডিয়েন্ট আপনার উদ্দেশ্যমূলক কার্যকারিতাটি মূল্যায়নের চেয়ে n গুন বেশি নিতে পারে। (আপনি কিছুটা সময় সাশ্রয় করতে সক্ষম হবেন কারণ অনেকগুলি শর্তাবলী বিভিন্ন ডেরাইভেটিভ জুড়ে পুনরায় ব্যবহার করা যেতে পারে তবে এটি আপনাকে কম্পিউটার দ্বারা উত্পাদিত অভিব্যক্তি ব্যবহার না করে সতর্কতার সাথে কোডিং করতে বাধ্য করবে And এক্সপ্রেশনস, ত্রুটির সম্ভাবনা তুচ্ছ নয় sure আপনি নির্ভুলতার জন্য এই ডেরাইভেটিভগুলি যাচাই করেছেন তা নিশ্চিত করুন))
আমার গল্পের বিষয়টি হ'ল এই সিএ উত্পন্ন এক্সপ্রেশনগুলির নিজস্ব বিষয় রয়েছে। মজার বিষয়টি হ'ল আমার সহকর্মী সমস্যার জটিলতায় আসলেই গর্বিত ছিলেন, তিনি স্পষ্টতই একটি কঠিন সমস্যা সমাধান করছিলেন কারণ বীজগণিতটি খুব বাজে ছিল। আমার মনে হয় না যে তিনি বিবেচনা করেছিলেন তিনি যদি সেই বীজগণিতটি আসলে সঠিক জিনিসটি গণনা করছিল, এটি কি এত নির্ভুলভাবে কাজ করছিল, এবং এটি এত দক্ষতার সাথে করছিল?
এই প্রকল্পের সময় আমি যদি প্রবীণ ব্যক্তি হতাম তবে আমি তাকে দাঙ্গা আইনটি পড়তে পারি। তার গর্ব তাকে একটি সমাধান ব্যবহার করতে বাধ্য করেছিল যা সম্ভবত অহেতুক জটিল, এমনকি একটি সীমাবদ্ধ পার্থক্য ভিত্তিক গ্রেডিয়েন্ট পর্যাপ্ত কিনা তা পরীক্ষা না করেই। আমি বাজি ধরব আমরা এই অপটিমাইজেশনটি চালাতে সম্ভবত একটি মানব-সপ্তাহ ব্যয় করেছি। খুব কমপক্ষে, আমি তাকে পরামর্শ দিয়েছি উত্পাদিত গ্রেডিয়েন্টটি সাবধানতার সাথে পরীক্ষা করার জন্য। এটা কি সঠিক ছিল? সীমাবদ্ধ পার্থক্য ডেরাইভেটিভসের সাথে তুলনা করে এটি কতটা সঠিক ছিল? আসলে, আজকের চারপাশে এমন সরঞ্জাম রয়েছে যা তাদের ডেরাইভেটিভ পূর্বাভাসে ত্রুটির একটি অনুমানও ফিরিয়ে দেবে। এটি অবশ্যই অভিযোজিত পার্থক্য কোডের জন্য সত্য , (ডেরিভেস্ট) আমি ম্যাটল্যাব লিখেছি।
কোডটি পরীক্ষা করুন। ডেরিভেটিভস যাচাই করুন।
তবে আপনি এটির যে কোনওটি করার আগে, অন্যান্য যদি আরও ভাল অপ্টিমাইজেশন স্কিমগুলি বিকল্প হয় তবে তা বিবেচনা করুন। উদাহরণস্বরূপ, আপনি যদি ক্ষয়ক্ষতিযুক্ত ফিটিং করছেন, তবে আপনি খুব সহজেই পার্টিশনযুক্ত ননলাইনার ন্যূনতম স্কোয়ারগুলি ব্যবহার করতে পারেন (কখনও কখনও বিভাজ্য ন্যূনতম স্কোয়ার্সও বলা হয়। আমি মনে করি যে এটি তাদের বইতে সেবার এবং ওয়াইল্ড দ্বারা ব্যবহৃত শব্দটি ছিল) ধারণাটি প্যারামিটারগুলির সেটটি অভ্যন্তরীণ রৈখিক এবং অভ্যন্তরীণভাবে ননলাইনার সেটগুলিতে বিভক্ত করা। একটি অপ্টিমাইজেশন ব্যবহার করুন যা কেবল ননলাইনার পরামিতিগুলিতে কাজ করে। এই পরামিতিগুলি "জ্ঞাত" হিসাবে দেওয়া হয়েছে, তারপরে অভ্যন্তরীণভাবে লিনিয়ার পরামিতিগুলি সাধারণ রৈখিক ন্যূনতম স্কোয়ারগুলি ব্যবহার করে অনুমান করা যায়। এই স্কিমটি অপ্টিমাইজেশনে প্যারামিটারের স্থান হ্রাস করবে। এটি সমস্যাটিকে আরও দৃust় করে তোলে, যেহেতু আপনাকে রৈখিক প্যারামিটারগুলির জন্য আরম্ভের মানগুলি খুঁজে পাওয়ার দরকার নেই। এটি আপনার অনুসন্ধানের জায়গার মাত্রা হ্রাস করে, তাই সমস্যাটিকে আরও দ্রুত চালানো making আবার সরবরাহ করেছিএই উদ্দেশ্যে একটি সরঞ্জাম , তবে কেবল ম্যাটল্যাবে।
আপনি যদি বিশ্লেষণী ডেরিভেটিভ ব্যবহার করেন তবে পদগুলি পুনরায় ব্যবহার করতে তাদের কোড করুন। এটি একটি গুরুতর সময় সাশ্রয় হতে পারে এবং আপনার নিজের সময় সাশ্রয় করে বাগগুলি হ্রাস করতে পারে। তবে তারপরে numbers নম্বরগুলি পরীক্ষা করে দেখুন!
codegen
এতে প্যাকেজটি দেখতে চাইবেন কারণ এটি প্রতিটি বা সমস্ত প্রকাশের জন্য স্বয়ংক্রিয়ভাবে কমপ্যাক্ট এবং দক্ষ সি বা ফোর্টরান কোড তৈরি করতে পারে।