ממשקי 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
בקוד שלך מדי פעם. אם אתה צריך לעשות זאת, זמין הדרכה אינטראקטיבית כדי להדגים כיצד זה עובד.