כיצד להשתמש ב- 'torch.no_grad' ב- PyTorch?

Kyzd Lhstms B Torch No Grad B 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 Collaboratory היא בחירה מצוינת של פלטפורמה לפיתוח פרויקטים המשתמשים במסגרת PyTorch בגלל ה-GPUs הייעודיים שלה. לך לקולאב אתר אינטרנט ותפתחי ' מחברת חדשה ' כפי שמוצג:



שלב 2: התקן וייבא את ספריית הלפיד

כל הפונקציונליות של PyTorch מובלעת על ידי ' לפיד 'ספרייה. התקנתו וייבואו חיוניים לפני תחילת העבודה. ה ' !צִפצוּף ' חבילת ההתקנה של Python משמשת להתקנת ספריות והיא מיובאת לפרויקט באמצעות ' יְבוּא ' פקודה:

!pip להתקין לפיד
לייבא לפיד

שלב 3: הגדר PyTorch Tensor עם Gradient

הוסף טנזור PyTorch לפרויקט באמצעות ' torch.tensor() ' שיטה. לאחר מכן, תן לו שיפוע חוקי באמצעות ' requires_grad=נכון שיטת ' כפי שמוצג בקוד שלהלן:

A = torch.tensor([5.0], requires_grad=True)

שלב 4: השתמש בשיטת 'torch.no_grad' כדי להסיר את השיפוע

לאחר מכן, הסר את השיפוע מהטנזור שהוגדר קודם לכן באמצעות ' torch.no_grad ' שיטה:

עם torch.no_grad():
B = A**2 + 16

הקוד לעיל פועל באופן הבא:

  • ה ' no_grad() שיטת ' משמשת בתוך ' עם 'לולאה.
  • כל טנזור הכלול בתוך הלולאה הוסר הגרדיאנט שלו.
  • לבסוף, הגדר חישוב אריתמטי לדוגמה באמצעות הטנזור שהוגדר קודם לכן והקצה אותו ל' ב ' משתנה כפי שמוצג לעיל:

שלב 5: ודא את הסרת השיפוע

השלב האחרון הוא לאמת את מה שנעשה זה עתה. השיפוע מהטנזור' א ' הוסר ויש לבדוק אותו בפלט באמצעות ' הדפס() ' שיטה:

print('חישוב שיפוע עם torch.no_grad: ', A.grad)
print('\nטנסור מקורי: ', A)
print('\nחישוב אריתמטי לדוגמה: ', ב)

הקוד לעיל פועל באופן הבא:

  • ה ' גראד השיטה נותנת לנו את שיפוע הטנזור א '. זה לא מציג אף אחד בפלט למטה מכיוון שהשיפוע הוסר באמצעות ' torch.no_grad ' שיטה.
  • הטנזור המקורי עדיין מראה שיש לו שיפוע כפי שניתן לראות מה' requires_grad=נכון ' הצהרה בפלט.
  • לבסוף, החישוב האריתמטי לדוגמה מציג את התוצאה של המשוואה שהוגדרה קודם לכן:

הערה : תוכל לגשת למחברת Colab שלנו כאן קישור .

פרו-טיפ

ה ' torch.no_grad השיטה אידיאלית במקום בו אין צורך בשיפועים או כאשר יש צורך להפחית את עומס העיבוד על החומרה. שימוש נוסף בשיטה זו הוא במהלך הסקת מסקנות מכיוון שהמודל משמש רק לביצוע תחזיות המבוססות על נתונים חדשים. מכיוון שאין הכשרה מעורבת, זה הגיוני לחלוטין פשוט להשבית את חישוב ההדרגות.

הַצלָחָה! הראינו לך כיצד להשתמש בשיטת 'torch.no_grad' כדי להשבית מעברי צבע ב- PyTorch.

סיכום

להשתמש ב ' torch.no_grad שיטת ' ב- PyTorch על ידי הגדרתה בתוך ' עם לולאה וכל הטנסורים הכלולים בתוכו יוסרו הגרדיאנט שלהם. זה יביא לשיפורים במהירויות העיבוד וימנע הצטברות של שיפועים בתוך לולאת האימון. בבלוג זה, הצגנו כיצד זה ' torch.no_grad ניתן להשתמש בשיטה כדי להשבית את ההדרגות של הטנזורים שנבחרו ב- PyTorch.