Swift for TensorFlow APIها از نوع Tensor
به عنوان ابزار اولیه برای انجام محاسبات شتابدار استفاده می کنند. یک Tensor
یک آرایه چند بعدی از مقادیر را نشان می دهد و عملیات روی Tensor
s به طور خودکار با استفاده از یکی از دو backend به شتاب دهنده های موجود ارسال می شود.
یک 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
نوع پیشفرض برای حرف ممیز شناور در سوئیفت است. مقادیر Float
معمولاً در محاسبات یادگیری ماشین رایجتر هستند، بنابراین ما در اینجا از آن استفاده میکنیم.
بسیاری از عملگرهای رایج روی Tensor
s کار می کنند. به عنوان مثال، برای اضافه کردن دو مورد از آنها و به دست آوردن نتیجه، می توانید موارد زیر را انجام دهید:
let tensor3 = tensor1 + tensor2
لیست کامل عملیاتی که می توانید روی یک Tensor
انجام دهید در اسناد API موجود است.
_عملیات _Raw
عملیات Tensor
توسط دو ابزار مختلف کار با شتاب دهنده ها پشتیبانی می شود، با این حال آنها یک رابط سطح بالا یکپارچه دارند. در زیر هود، عملیات _Raw
تعریف شده است که بسته به پشتیبان مورد استفاده برای Tensor
های مورد نظر، به نسخه های _RawXLA
یا _RawTFEager
ارسال می شود. این اتصالات _Raw
به TensorFlow یا X10 به طور خودکار تولید می شوند.
به طور معمول، شما نیازی به تعامل مستقیم با عملیات _Raw
ندارید. اینترفیسهای Swift اصطلاحی در بالای اینها ساخته شدهاند، و شما معمولاً محاسبات Tensor
را به این ترتیب انجام میدهید.
با این حال، همه عملیاتهای زیربنایی TensorFlow دارای رابطهای Swift منطبق نیستند، بنابراین ممکن است گاهی نیاز به دسترسی به عملگرهای _Raw
در کد خود داشته باشید. اگر نیاز به انجام این کار دارید، یک آموزش تعاملی برای نشان دادن نحوه کارکرد آن در دسترس است.