פעולות בסיסיות עם טנסור ב- PyTorch

P Wlwt Bsysywt M Tnswr B Pytorch



טנסורים הם אבן הפינה של PyTorch המספקת מבנה נתונים רב עוצמה וגמיש עבור חישובים מספריים בלמידה עמוקה. כמו מערכי NumPy, הם מייצגים מערכים רב מימדיים אך עם תכונות ואופטימיזציות נוספות שתוכננו במיוחד עבור משימות למידה עמוקה. מכיוון שטנזורים הם האובייקטים העיקריים לאחסון ולטפל בנתונים המספריים ב- PyTorch, הם יכולים להיות בעלי ממדים שונים, החל מסקלרים (טנסורים 0-ממדיים) ועד לוקטורים (טנסורים חד-ממדיים), מטריצות (טנסורים דו-ממדיים) ומעלה. -טנסורים ממדיים.

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

PyTorch מספקת סט מקיף של פונקציות ושיטות לתפעול הטנזורים. אלה כוללים פעולות לעיצוב מחדש של הטנזורים, חילוץ אלמנטים או תת-טנסורים ספציפיים, וצירוף או פיצול של הטנזורים לאורך ממדים מוגדרים. בנוסף, PyTorch מציעה פונקציונליות לאינדקס, חיתוך ושידור של הטנסורים המקלים על העבודה עם טנסורים בצורות וגדלים שונים.







במאמר זה, נלמד את הפעולות הבסיסיות עם טנסורים ב- PyTorch, נחקור כיצד ליצור טנסורים, לבצע פעולות בסיסיות, לתפעל את צורתם ולהעביר אותם בין CPU ל-GPU.



יצירת טנסורים

ניתן ליצור טנסורים ב- PyTorch בכמה דרכים. בואו נחקור כמה שיטות נפוצות.



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





יְבוּא לפיד

# ליצור 1 - טנסור ממדי מרשימת Python
tensor_1d = לפיד. מוֹתֵחַ ( [ 1 , 2 , 3 , 4 , 5 ] )
הדפס ( tensor_1d )

# ליצור 2 - טנסור ממדי מרשימת Python מקוננת
tensor_2d = לפיד. מוֹתֵחַ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )
הדפס ( tensor_2d )

# צור טנזור של אפסים עם צורה מסוימת
zeros_tensor = לפיד. אפסים ( 3 , 2 )
הדפס ( zeros_tensor )

# צור טנסור של כאלה עם צורה ספציפית
ones_tensor = לפיד. יחידות ( 2 , 3 )
הדפס ( ones_tensor )

# צור טנזור עם ערכים אקראיים מהתפלגות אחידה
טנסור_random = לפיד. ראנד ( 2 , 2 )
הדפס ( טנסור_random )

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



פעולות טנזור

ברגע שיש לנו טנזורים, נוכל לבצע עליהם פעולות שונות כמו פעולות אריתמטיות של יסוד, פעולות מטריצה ​​ועוד.

פעולות אריתמטיות של יסודות

פעולות אריתמטיות מבחינת אלמנט מאפשרות לנו לבצע חישובים בין טנסורים על בסיס אלמנט אחר אלמנט. הטנזורים המעורבים במבצע צריכים להיות בעלי אותה צורה.

הנה כמה דוגמאות:

יְבוּא לפיד

# צור טנסורים
טנסור1 = לפיד. מוֹתֵחַ ( [ 1 , 2 , 3 ] )
tensor2 = לפיד. מוֹתֵחַ ( [ 4 , 5 , 6 ] )

# חיבור
חיבור = טנסור1 + tensor2
הדפס ( 'חיבור:' , חיבור )

# חיסור
חִסוּר = טנסור1 - tensor2
הדפס ( 'חִסוּר:' , חִסוּר )

# כפל
כֶּפֶל = טנסור1 * tensor2
הדפס ( 'כֶּפֶל:' , כֶּפֶל )

# חטיבה
חֲלוּקָה = טנסור1 / tensor2
הדפס ( 'חֲלוּקָה:' , חֲלוּקָה )

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

פעולות מטריקס

PyTorch מספק פעולות מטריצה ​​יעילות עבור טנסורים כגון כפל מטריצה ​​והטרנספוזיציה. פעולות אלו שימושיות במיוחד עבור משימות כמו אלגברה לינארית וחישובי רשת עצבית.

יְבוּא לפיד

# צור טנסורים
טנסור1 = לפיד. מוֹתֵחַ ( [ [ 1 , 2 ] , [ 3 , 4 ] ] )
tensor2 = לפיד. מוֹתֵחַ ( [ [ 5 , 6 ] , [ 7 , 8 ] ] )

# כפל מטריצה
מוצר_מטריקס = לפיד. המחצלת ( טנסור1 , tensor2 )
הדפס ( 'מוצר מטריקס:' , מוצר_מטריקס )

# טרנספוזי מטריקס
transpose_matrix = טנסור1. ט
הדפס ( 'העברה של מטריקס:' , transpose_matrix )

בדוגמה הנתונה, אנו מבצעים את הכפל המטריצה ​​באמצעות הפונקציה 'torch.matmul' ומשיגים טרנספוזיציה של מטריצה ​​באמצעות התכונה '.T'.

מניפולציה של צורת טנזור

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

יְבוּא לפיד

# צור טנזור
מוֹתֵחַ = לפיד. מוֹתֵחַ ( [ [ 1 , 2 , 3 ] , [ 4 , 5 , 6 ] ] )

# עצב מחדש את הטנזור
reshaped_tensor = מוֹתֵחַ. שִׁנוּי צוּרָה ( 3 , 2 )
הדפס ( 'טנזור מעוצב מחדש:' , reshaped_tensor )

# קבל גודל של טנזור
גודל = מוֹתֵחַ. גודל ( )
הדפס ( 'גודל טנסור:' , גודל )

# קבל את מספר האלמנטים ב טנסור
מספר_אלמנטים = מוֹתֵחַ. תן שם ( )
הדפס ( 'מספר אלמנטים:' , מספר_אלמנטים )

בקוד המצורף, אנו מעצבים מחדש טנזור באמצעות פונקציית צורה מחדש, משחזרים את גודלו של טנזור בשיטת הגודל, ומקבלים את המספר הכולל של אלמנטים בטנזור בשיטת ה- numel.

העברת טנסורים בין CPU ל-GPU

PyTorch מספקת תמיכה בהאצת GPU המאפשרת לנו לבצע חישובים בכרטיסים גרפיים אשר יכולים להאיץ משמעותית את משימות הלמידה העמוקה על ידי הורדת זמני האימון. אנחנו יכולים להעביר את הטנזורים בין המעבד ל-GPU בשיטת 'to'.

הערה : ניתן לעשות זאת רק אם יש לך NVIDIA GPU עם CUDA במחשב שלך.

יְבוּא לפיד

# צור טנזור במעבד
tensor_cpu = לפיד. מוֹתֵחַ ( [ 1 , 2 , 3 ] )

# חשבון אם GPU זמין
אם לפיד. שונה . זמין ( ) :
# העבר את הטנזור ל-GPU
tensor_gpu = tensor_cpu. ל ( 'שונה' )
הדפס ( 'טנזור ב-GPU:' , tensor_gpu )
אַחֵר :
הדפס ( 'GPU לא זמין.' )

בקוד שסופק, אנו בודקים אם GPU זמין באמצעות torch.cuda.is_available(). אם GPU זמין, אנו מעבירים את הטנזור מהמעבד ל-GPU בשיטת 'to' עם הארגומנט 'cuda'.

סיכום

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