סקירת טנזור

ממשקי API של Swift for TensorFlow משתמשים בסוג Tensor כאמצעי העיקרי לביצוע חישוב מואץ. Tensor מייצג מערך רב-ממדי של ערכים, ופעולות על Tensor s נשלחות אוטומטית למאיצים זמינים באמצעות אחד משני קצה אחורי.

Tensor הוא גנרי לגבי סוג הערכים שהוא מכיל. סוג הערכים הללו חייב להתאים ל- TensorFlowScalar , כאשר הסוגים הנפוצים הם Float , Int32 ו- Bool . לדוגמה, כדי לאתחל שני Tensor המכילים Float עם כמה ערכים שנקבעו מראש, תוכל לעשות את הפעולות הבאות:

let tensor1 = Tensor<Float>([0.0, 1.0, 2.0])
let tensor2 = Tensor<Float>([1.5, 2.5, 3.5])

אם השארת את הפרמטר מסוג <Float> , סוויפט היה מסיק סוג של Tensor<Double> . Double הוא סוג ברירת המחדל של מילטרים של נקודה צפה ב-Swift. ערכי Float נוטים להיות נפוצים יותר בחישובי למידת מכונה, אז אנחנו משתמשים בזה כאן.

מפעילים נפוצים רבים עובדים על Tensor s. לדוגמה, כדי להוסיף שניים מהם ולהשיג את התוצאה, אתה יכול לעשות את הפעולות הבאות:

let tensor3 = tensor1 + tensor2

הרשימה המלאה של הפעולות שאתה יכול לבצע על Tensor זמינה בתיעוד ה-API .

_פעולות _Raw

פעולות Tensor מגובות בשני אמצעים שונים לעבודה עם מאיצים, אך עם זאת יש להם ממשק אחיד ברמה גבוהה. מתחת למכסה המנוע, מוגדרות פעולות _Raw שנשלחות לגרסאות _RawXLA או _RawTFEager , בהתאם לקצה האחורי המשמש ל- Tensor המדוברים. _Raw bindings אלה ל- TensorFlow או X10 נוצרות אוטומטית.

בדרך כלל, לא תצטרך ליצור אינטראקציה ישירה עם פעולות _Raw . ממשקי Swift אידיומטיים נבנו על גבי אלה, וכך בדרך כלל תבצעו חישובי Tensor .

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