طبقات

مثلما أن Tensor هو لبنة البناء الأساسية لدينا للحسابات المتوازية المتسارعة، سيتم التعبير عن معظم نماذج وعمليات التعلم الآلي من حيث بروتوكول Layer . تحدد Layer واجهة للأنواع التي تأخذ مدخلات قابلة للتمييز، وتعالجها، وتنتج مخرجات قابلة للتمييز. يمكن أن تحتوي Layer على حالة، مثل الأوزان القابلة للتدريب.

Layer عبارة عن تحسين لبروتوكول Module النمطية، حيث تحدد Module الحالة الأكثر عمومية حيث لا يكون إدخال النوع قابلاً للتمييز بالضرورة. ستتعامل معظم المكونات في النموذج مع مدخلات قابلة للتمييز، ولكن هناك حالات قد تحتاج فيها الأنواع إلى التوافق مع Module بدلاً من ذلك.

إذا قمت بإنشاء عملية لا تحتوي على معلمات قابلة للتدريب بداخلها، فستحتاج إلى تعريفها من حيث ParameterlessLayer بدلاً من Layer .

غالبًا ما يتم تعريف النماذج نفسها على أنها 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 لتستخدمها عند تحديد النماذج أو الوحدات الفرعية. فيما يلي قائمة بالطبقات التي يوفرها Swift لـ TensorFlow، مجمعة حسب المجالات الوظيفية:

زيادة

التفاف

التضمين

شكلية

تطبيع

التجميع

الشبكات العصبية المتكررة

إعادة تشكيل

الاختزال

محسنات

تعد أدوات التحسين مكونًا أساسيًا في تدريب نموذج التعلم الآلي، حيث تقوم بتحديث النموذج بناءً على التدرج المحسوب. ستقوم هذه التحديثات بشكل مثالي بضبط معلمات النموذج بطريقة لتدريب النموذج.

لاستخدام مُحسِّن، قم أولاً بتهيئته لنموذج مستهدف بمعلمات التدريب المناسبة:

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

قم بتدريب نموذج من خلال الحصول على تدرج فيما يتعلق بالإدخال ووظيفة الخسارة، ثم قم بتحديث النموذج على طول هذا التدرج باستخدام المحسن الخاص بك:

optimizer.update(&model, along: gradients)

محسنات مدمجة

يتم توفير العديد من أدوات تحسين الأداء الشائعة بواسطة Swift لـ TensorFlow. وتشمل هذه ما يلي: