স্তরসমূহ

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

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

আপনি যদি একটি অপারেশন তৈরি করেন তার মধ্যে কোনো প্রশিক্ষণযোগ্য প্যারামিটার না থাকে, তাহলে আপনি এটিকে Layer এর পরিবর্তে ParameterlessLayer এর পরিপ্রেক্ষিতে সংজ্ঞায়িত করতে চাইবেন।

মডেলগুলিকে প্রায়শই Layer হিসাবে সংজ্ঞায়িত করা হয় এবং নিয়মিতভাবে অন্যান্য Layer দ্বারা গঠিত হয়। একটি মডেল বা সাবইউনিট যেটিকে একটি Layer হিসাবে সংজ্ঞায়িত করা হয়েছে তাকে অন্য যেকোন Layer মতোই বিবেচনা করা যেতে পারে, যা অন্যান্য মডেল বা সাবইউনিট থেকে নির্বিচারে জটিল মডেল নির্মাণের অনুমতি দেয়।

আপনার নিজস্ব একটি মডেল বা অপারেশনের জন্য একটি কাস্টম Layer সংজ্ঞায়িত করতে, আপনি সাধারণত এর অনুরূপ একটি টেমপ্লেট অনুসরণ করবেন:

public struct MyModel: Layer {
  // Define your layers or other properties here.

  // A custom initializer may be desired to configure the model.
  public init() {}

  @differentiable
  public func callAsFunction(_ input: Tensor<Float>) -> Tensor<Float> {
    // Define the sequence of operations performed on model input to arrive at the output.
    return ...
  }
}

Layers প্রশিক্ষণযোগ্য উপাদানগুলি, যেমন ওজন এবং পক্ষপাত, সেইসাথে অন্যান্য Layer বৈশিষ্ট্য হিসাবে ঘোষণা করা যেতে পারে। একটি কাস্টম ইনিশিয়ালাইজার একটি মডেলের জন্য কাস্টমাইজযোগ্য পরামিতিগুলি প্রকাশ করার জন্য একটি ভাল জায়গা, যেমন স্তরগুলির পরিবর্তনশীল সংখ্যা বা শ্রেণীবিভাগ মডেলের আউটপুট আকার। অবশেষে, Layer মূল হল callAsFunction() , যেখানে আপনি ইনপুট এবং আউটপুটের ধরণগুলিকে সংজ্ঞায়িত করবেন এবং সেইসাথে যে রূপান্তরটি একটিতে নেয় এবং অন্যটিকে ফেরত দেয়।

অন্তর্নির্মিত স্তর

অনেক সাধারণ মেশিন লার্নিং ক্রিয়াকলাপগুলিকে Layer হিসাবে এনক্যাপসুলেট করা হয়েছে যাতে আপনি মডেল বা সাবুনিটগুলি সংজ্ঞায়িত করার সময় ব্যবহার করতে পারেন। নিম্নে টেনসরফ্লো-এর জন্য সুইফ্ট দ্বারা প্রদত্ত স্তরগুলির একটি তালিকা রয়েছে, যা কার্যকরী এলাকা দ্বারা গোষ্ঠীবদ্ধ:

পরিবর্ধন

আবর্তন

এমবেডিং

রূপগত

স্বাভাবিককরণ

পুলিং

পৌনঃপুনিক নিউরাল নেটওয়ার্ক

পুনর্নির্মাণ

আপস্যাম্পলিং

অপ্টিমাইজার

অপ্টিমাইজারগুলি একটি মেশিন লার্নিং মডেলের প্রশিক্ষণের একটি মূল উপাদান, একটি গণনা করা গ্রেডিয়েন্টের উপর ভিত্তি করে মডেলটি আপডেট করে৷ এই আপডেটগুলি আদর্শভাবে একটি মডেলের পরামিতিগুলিকে এমনভাবে সামঞ্জস্য করবে যাতে মডেলটিকে প্রশিক্ষণ দেওয়া যায়।

একটি অপ্টিমাইজার ব্যবহার করতে, প্রথমে উপযুক্ত প্রশিক্ষণ পরামিতি সহ একটি লক্ষ্য মডেলের জন্য এটি শুরু করুন:

let optimizer = RMSProp(for: model, learningRate: 0.0001, decay: 1e-6)

ইনপুট এবং লস ফাংশন সংক্রান্ত একটি গ্রেডিয়েন্ট প্রাপ্ত করে একটি মডেলকে প্রশিক্ষণ দিন এবং তারপর আপনার অপ্টিমাইজার ব্যবহার করে সেই গ্রেডিয়েন্ট বরাবর মডেলটি আপডেট করুন:

optimizer.update(&model, along: gradients)

অন্তর্নির্মিত অপ্টিমাইজার

TensorFlow এর জন্য সুইফট দ্বারা বেশ কিছু সাধারণ অপ্টিমাইজার প্রদান করা হয়। এর মধ্যে নিম্নলিখিতগুলি অন্তর্ভুক্ত রয়েছে: