كيفية استخدام 'torch.no_grad' في PyTorch؟

Kyfyt Astkhdam Torch No Grad Fy Pytorch



يعد حساب التدرجات لطبقات الشبكة العصبية ميزة مضمنة في إطار عمل PyTorch. يمكن للمستخدمين قياس الاتصال بين الطبقات المجاورة عند حساب التدرجات في التمرير الخلفي. ومع ذلك، فإن هذا يؤثر سلبًا على الأجهزة نظرًا للكميات الكبيرة من البيانات التي يجب معالجتها، وفي هذه الحالة، ' torch.no_grad يمكن استخدام الطريقة لإيقاف حساب التدرج عند الحاجة.

في هذه المدونة سنناقش كيفية استخدام ' torch.no_grad 'الطريقة في PyTorch.

ما هي طريقة 'torch.no_grad' في PyTorch؟

ال ' torch.no_grad يتم استخدام الطريقة لإدارة السياق ضمن إطار عمل PyTorch التنموي. والغرض منه هو إيقاف حساب التدرجات للاتصال بين الطبقات اللاحقة لنموذج التعلم العميق. تكمن فائدة هذه الطريقة في أنه عندما لا تكون التدرجات مطلوبة في نموذج معين، فيمكن تعطيلها لتخصيص المزيد من موارد الأجهزة لمعالجة حلقة التدريب الخاصة بالنموذج.







كيفية استخدام طريقة 'torch.no_grad' في PyTorch؟

يتم حساب التدرجات ضمن التمريرة الخلفية في PyTorch. افتراضيًا، يتم تنشيط التمايز التلقائي في PyTorch لجميع نماذج التعلم الآلي. يعد إلغاء تنشيط حساب التدرج أمرًا ضروريًا للمطورين الذين ليس لديهم موارد كافية لمعالجة الأجهزة.



اتبع الخطوات أدناه لمعرفة كيفية استخدام ' torch.no_grad 'طريقة لتعطيل حساب التدرجات في PyTorch:







الخطوة 1: قم بتشغيل Colab IDE

يعد Google Colaboratory خيارًا ممتازًا للنظام الأساسي لتطوير المشاريع باستخدام إطار عمل PyTorch نظرًا لوحدات معالجة الرسوميات المخصصة له. اذهب إلى كولاب موقع إلكتروني وافتح ' دفتر جديد 'كما هو موضح:



الخطوة 2: تثبيت واستيراد مكتبة Torch

يتم تغليف جميع وظائف PyTorch بواسطة ' شعلة ' مكتبة. تركيبه واستيراده ضروريان قبل بدء العمل. ال ' !pip 'يتم استخدام حزمة تثبيت Python لتثبيت المكتبات ويتم استيرادها إلى المشروع باستخدام' يستورد ' يأمر:

!pip تثبيت الشعلة
استيراد الشعلة

الخطوة 3: تحديد موتر PyTorch مع التدرج

أضف موتر PyTorch إلى المشروع باستخدام ' الشعلة.الموتر() ' طريقة. ثم قم بإعطائه تدرجًا صالحًا باستخدام ' require_grad=صحيح 'الطريقة كما هو موضح في الكود أدناه:

A = torch.tensor([5.0]، require_grad=True)

الخطوة 4: استخدم طريقة 'torch.no_grad' لإزالة التدرج اللوني

بعد ذلك، قم بإزالة التدرج من الموتر المحدد مسبقًا باستخدام ' torch.no_grad ' طريقة:

مع torch.no_grad():
ب = أ**2 + 16

الكود أعلاه يعمل على النحو التالي:

  • ال ' no_grad() 'يتم استخدام الطريقة داخل' مع ' حلقة.
  • تمت إزالة تدرج كل موتر موجود داخل الحلقة.
  • وأخيرًا، قم بتحديد نموذج حسابي باستخدام الموتر المحدد مسبقًا وقم بتعيينه إلى ' ب 'المتغير كما هو موضح أعلاه:

الخطوة 5: التحقق من إزالة التدرج

الخطوة الأخيرة هي التحقق مما تم إنجازه للتو. التدرج من الموتر ' أ 'تمت إزالته ويجب التحقق منه في الإخراج باستخدام' مطبعة() ' طريقة:

طباعة ('حساب التدرج باستخدام torch.no_grad:'، A.grad)
طباعة ('\nالموتر الأصلي:'، A)
طباعة('\nنموذج الحساب الحسابي: '، B)

الكود أعلاه يعمل على النحو التالي:

  • ال ' خريج 'الطريقة تعطينا تدرج الموتر' أ '. لا يظهر أي شيء في الإخراج أدناه لأنه تمت إزالة التدرج باستخدام ' torch.no_grad ' طريقة.
  • لا يزال الموتر الأصلي يُظهر أن له تدرجًا كما يُرى من ' require_grad=صحيح ' بيان في الإخراج.
  • وأخيرًا، يوضح نموذج الحساب الحسابي نتيجة المعادلة المحددة مسبقًا:

ملحوظة : يمكنك الوصول إلى دفتر Colab الخاص بنا على هذا وصلة .

نصيحة محترف

ال ' torch.no_grad تعتبر الطريقة مثالية عندما لا تكون هناك حاجة إلى التدرجات أو عندما تكون هناك حاجة لتقليل حمل المعالجة على الأجهزة. هناك استخدام آخر لهذه الطريقة وهو أثناء الاستدلال لأن النموذج يستخدم فقط لإجراء تنبؤات بناءً على البيانات الجديدة. نظرًا لعدم وجود أي تدريب، فمن المنطقي تمامًا تعطيل حساب التدرجات.

نجاح! لقد أوضحنا لك كيفية استخدام طريقة 'torch.no_grad' لتعطيل التدرجات في PyTorch.

خاتمة

استخدم ال ' torch.no_grad 'طريقة في PyTorch عن طريق تعريفها داخل' مع 'حلقة وجميع الموترات الموجودة بداخلها ستتم إزالة تدرجها. سيؤدي ذلك إلى تحسينات في سرعات المعالجة ومنع تراكم التدرجات داخل حلقة التدريب. في هذه المدونة، عرضنا كيف أن هذا ' torch.no_grad يمكن استخدام الطريقة لتعطيل تدرجات الموترات المحددة في PyTorch.