[التعلم السريع] مقدمة إلى Pytorch (XNUMX): تنفيذ انحدار MLP وتعلم أساسيات PyTorch

في المرة الأخيرة ، قمت بمراجعة كيفية التعامل مع الشعلة ، وهي قاعدة PyTorch.

هذه المرة ، أود تنفيذ انحدار متعدد الطبقات (MLP) في PyTorch ومشاهدة حزم PyTorch الرئيسية.

التدفق العام

التدفق العام لتنفيذ النموذج على النحو التالي. الأرقام الموجودة بين قوسين هي حزم PyTorch المستخدمة في ذلك الوقت.

  • إنشاء مجموعة بيانات الإدخال ، والمعالجة التكرارية (Dataset ، Dataloader)
  • تعريف الشبكة العصبية (nn.Module)
  • حساب الخسارة ، انتشار التدرج إلى معلمات الشبكة (nn.Module)
  • تحديث أوزان الشبكة (Optimaizer)

حزم PyTorch الرئيسية

بغض النظر عن PyTorch ، تقدم العديد من أطر التعلم العميق حزمًا متنوعة لتبسيط التنفيذ. العناصر الرئيسية في PyTorch هي:

الشعلةصفيف متعدد الأبعاد. هيكل البيانات المستخدم في PyTorch.
الشعلةتنفيذ إلى الأمام / backpropagation.يدعم عملية التمايز التلقائية لـ Tensor مثل الانتشار الخلفي (backward ()).
torch.utils.dataيتضمن أدوات مساعدة مثل "Dataset" التي تجمع البيانات المراد إدخالها وتسميتها كمجموعة ، و "Dataloader" الذي يستخرج البيانات من مجموعة البيانات في دفعة صغيرة ويمررها إلى النموذج.
torch.nn.Moduleيستخدم لبناء الشبكات العصبية.مسؤول عن تغليف المعلمات مثل حفظ النماذج وتحميلها والانتقال إلى وحدة معالجة الرسومات.
الشعلةيسمح لك باستخدام خوارزميات تحسين المعلمات مثل SDG و Adam.
حزم PyTorch الرئيسية

تنفيذ النموذج

إنشاء مجموعة بيانات

هذه المرة ، سنجهز الخطيئة (5x) بالإضافة إلى الأرقام العشوائية كبيانات تمرين باستخدام عدد.from_numpy()تحويل إلى torch.tensor مع.

تعريف النموذج

في pytorch ، يتم تعريف النموذج على أنه "فئة بيثون" التي ترث من فئة nn.Module.

فئة MLP (وحدة nn): فئة MLP المحددة ترث من الفئة الأصلية nn.Module
الحرف الأول def (): يتلقى الحجج وينشئ
سوبر (MLP ، ذاتي) .init (): ترث فئة الوالدين بوظيفة عظمى
def إلى الأمام (النفس ، x): يعمل عند استدعاء الوظيفة بعد إنشاء مثيل لها. عند تحديد وظيفة الأمام ، يتم أيضًا تحديد وظيفة الرجوع (حساب التدرج) تلقائيًا.

.parameters()يمكنك الحصول على هيكل ومعلمات الشبكة باستخدام.

حساب الخسارة / الانتشار العكسي / تحديث الوزن

لفهم السلوك الفردي ، سنأخذ جزءًا من البيانات من x وندخلها في الشبكة العصبية لنرى كيف تتغير المعلمات بسبب حسابات الخطأ وتحديثات الوزن.

حاول قلب حلقة التعلم

قم بإجراء التدفق أعلاه لكل دفعة لتدريب الشبكة العصبية.
Datasetإرجاع مجموعة من البيانات والتسمية المقابلة ،DataLoaderهي فئة تقوم بإرجاع البيانات بحجم الدُفعة.

تصور الرسم البياني للحساب

يمكن تصور هيكل MLP المكون من 3 طبقات والذي تم إنشاؤه هذه المرة باستخدام حزمة python تسمى torchviz.parameters()من فضلك عندما لا يكون ذلك كافيا.

حتى الآن ، حددنا PyTorch وحزم PyTorch الرئيسية من خلال تنفيذ انحدار MLP.