پروتکل های زیر به صورت جهانی در دسترس هستند.
نقاط سفارشی سازی را برای الگوریتم های
MutableCollection
فراهم می کند.اگر این الزامات در کتابخانه استاندارد گنجانده شود، فقط بخشی از
MutableCollection
خواهد بود. در عین حال، میتوانید مطابقت یک مجموعه را باMutableCollectionAlgorithms
اعلام کنید تا این نقاط سفارشیسازی را از الگوریتمهای دیگر تعریفشده درMutableCollectionAlgorithms
استفاده کنید.اعلامیه
public protocol MutableCollectionAlgorithms: MutableCollection where SubSequence: MutableCollectionAlgorithms
اعلامیه
public protocol TensorFlowScalar : _TensorFlowDataTypeCompatible
اعلامیه
public protocol TensorRangeExpression
انواعی که عناصر آنها را می توان در برخی از عناصر با رتبه بالاتر از همان نوع جمع کرد (مثال: تانسورها، چند تانسور)
اعلامیه
public protocol Collatable
نوعی که ویژگی ها و عناصر تو در تو را می توان در یک
Device
کپی کرد.اعلامیه
public protocol CopyableToDevice : _CopyableToDevice
نوعی که مقادیر آن مسیرهای کلیدی سفارشی را برای ویژگی ها یا عناصر فراهم می کند.
اعلامیه
public protocol KeyPathIterable : _KeyPathIterableBase
یک نوع داده اسکالر سازگار با TensorFlow.
انواعی که با
TensorFlowScalar
مطابقت دارند می توانند به عنوان نوعScalar
مرتبط باTensor
استفاده شوند.یک نوع داده عدد صحیح که نشان دهنده انواع عدد صحیح است که می تواند به عنوان شاخص های تانسور در TensorFlow استفاده شود.
اعلامیه
public protocol TensorFlowIndex : BinaryInteger, TensorFlowScalar
یک نوع داده ممیز شناور که با
Differentiable
مطابقت دارد و با TensorFlow سازگار است.توجه داشته باشید
زمانی که نوعScalar
مرتبط باTensorFlowFloatingPoint
مطابقت داشته باشد،Tensor
به طور مشروط باDifferentiable
مطابقت دارد.اعلامیه
public protocol TensorFlowFloatingPoint: TensorFlowScalar & BinaryFloatingPoint & Differentiable & ElementaryFunctions where Self.RawSignificand: FixedWidthInteger, Self == Self.TangentVector
نوعی که از نظر ریاضی یک منیفولد قابل تمایز را نشان می دهد که فضاهای مماس آن بعد محدود است.
اعلامیه
public protocol Differentiable
نوعی با مقادیری که از ضرب نقطه ای پشتیبانی می کند.
اعلامیه
public protocol PointwiseMultiplicative : AdditiveArithmetic
نوعی که یک فضای برداری رتبه بندی نشده را نشان می دهد. مقادیری از این نوع عناصری در این فضای برداری هستند و یا بدون شکل و یا شکل ایستا هستند.
اعلامیه
public protocol VectorProtocol : AdditiveArithmetic
نوعی که در فضای اقلیدسی قابل تمایز است. این نوع ممکن است یک فضای برداری را نشان دهد یا از یک فضای برداری و برخی اجزای غیر قابل تمایز دیگر تشکیل شده باشد.
از نظر ریاضی، این نشان دهنده یک منیفولد حاصل از یک فضای برداری قابل تمایز و چند منیفولد دلخواه است که در آن بسته مماس کل منیفولد حاصل برابر با مولفه فضای برداری است.
این انتزاع برای نمایش ساختارهای داده متمایز پذیر که هم دارای ویژگی های بردار متمایز هستند و هم سایر خصوصیات ذخیره شده که مشتق ندارند مفید است، به عنوان مثال.
struct Perceptron: @memberwise EuclideanDifferentiable { var weight: SIMD16<Float> var bias: Float @noDerivative var useBias: Bool }
توجه داشته باشید
اگر یک نوع را فقط با توجه به مولفه فضای برداری آن و زمانی کهTangentVector
برابر با مولفه فضای برداری آن است، باEuclideanDifferentiable
مطابقت دهید.اعلامیه
public protocol EuclideanDifferentiable : Differentiable
اعلامیه
public protocol Module: EuclideanDifferentiable, KeyPathIterable where TangentVector: VectorProtocol & ElementaryFunctions & PointwiseMultiplicative & KeyPathIterable
یک لایه شبکه عصبی
انواعی که با
Layer
مطابقت دارند، توابعی را نشان می دهند که ورودی ها را به خروجی ها نگاشت می کنند. آنها ممکن است یک حالت داخلی داشته باشند که با پارامترهایی مانند تانسور وزن نمایش داده می شود.نمونه های
Layer
یک متدcallAsFunction(_:)
قابل تفکیک را برای نگاشت ورودی ها به خروجی ها تعریف می کنند.اعلامیه
public protocol Layer : Module where Self.Input : Differentiable
یک لایه شبکه عصبی بدون پارامتر
TangentVector
لایه های بدون پارامتر همیشهEmptyTangentVector
است.اعلامیه
public protocol ParameterlessLayer : Layer where Self.TangentVector == EmptyTangentVector
نوعی که دارای توابع ابتدایی در دسترس است.
"تابع ابتدایی" تابعی است که از توان ها، ریشه ها، نمایی ها، لگاریتم ها، توابع مثلثاتی (sin، cos، tan) و معکوس آنها، و توابع هذلولی (sinh، cosh، tanh) و معکوس آنها ساخته شده است.
انطباق با این پروتکل به این معنی است که همه این بلوک های ساختمانی به عنوان توابع ایستا بر روی نوع موجود هستند.
let x: Float = 1 let y = Float.sin(x) // 0.84147096
اعلامیه
public protocol ElementaryFunctions
نوعی که ویژگی ها و عناصر تانسور ممیز شناور تو در تو را می توان از دقت کامل به دقت کاهش یافته و بالعکس تبدیل کرد.
یک جزئیات پیادهسازی که برای حل این واقعیت استفاده میشود که Swift نمیتواند یک محدودیت عمومی را بیان کند که برخی از انواع باید نمونهای از
Sampling
باشند.اعلامیه
public protocol SamplingProtocol : Collection
نوعی که می تواند از یک نمونه
numpy.ndarray
که به عنوانPythonObject
نشان داده می شود مقداردهی اولیه شود.اعلامیه
public protocol ConvertibleFromNumpyArray
نوعی که از لحاظ بیتی با یک یا چند نوع اسکالر NumPy سازگار است.
اعلامیه
public protocol NumpyScalarCompatible
نوعی که مقادیر آن را می توان به
PythonObject
تبدیل کرد.اعلامیه
public protocol PythonConvertible
نوعی که می تواند از
PythonObject
مقداردهی شود.اعلامیه
public protocol ConvertibleFromPython
نوعی که داده های شبه تصادفی قطعی قابل کاشت را فراهم می کند.
یک SeedableRandomNumberGenerator را می توان در هر جایی که از RandomNumberGenerator استفاده کرد استفاده کرد. زمانی مفید است که داده های شبه تصادفی باید در سراسر اجراها قابل تکرار باشند.
مطابق با پروتکل SeedableRandomNumberGenerator
برای اینکه یک نوع سفارشی با پروتکل
SeedableRandomNumberGenerator
مطابقت داشته باشد، اولیه سازinit(seed: [UInt8])
و همچنین الزاماتRandomNumberGenerator
را پیاده سازی کنید. مقادیر بازگردانده شده توسطnext()
باید یک دنباله قطعی تشکیل دهند که فقط به seed ارائه شده در زمان اولیه بستگی دارد.اعلامیه
public protocol SeedableRandomNumberGenerator : RandomNumberGenerator
اعلامیه
public protocol RandomDistribution
یک سلول لایه بازگشتی
اعلامیه
public protocol RecurrentLayerCell: Layer where Input == RNNCellInput<TimeStepInput, State>, Output == RNNCellOutput<TimeStepOutput, State>
نوعی با مقادیری که از عملیات باینری قابل تفکیک پشتیبانی می کند.
توسط
BidirectionalRecurrentLayer
به عنوان یک نیاز عمومی برای توابع ادغام استفاده می شود.اعلامیه
public protocol Mergeable : AdditiveArithmetic, Differentiable
اعلامیه
public protocol TensorOperation
اعلامیه
public protocol TFTensorOperation : TensorOperation
پروتکل ویژه برای فراخوانی عملیات tensorflow که آرایه های ناهمگن را به عنوان ورودی می گیرند.
اعلامیه
public protocol AnyTensor
اعلامیه
public protocol TensorProtocol
اعلامیه
public protocol DifferentiableTensorProtocol: TensorProtocol & Differentiable & EuclideanDifferentiable where Scalar: TensorFlowFloatingPoint
پروتکلی که نشان دهنده انواعی است که می توانند به
Array<CTensorHandle>
نگاشت شوند.این پروتکل جدا از
TensorGroup
تعریف شده است تا تعداد تانسورها در زمان اجرا مشخص شود. برای مثال،[Tensor<Float>]
ممکن است تعداد نامعلومی از عناصر در زمان کامپایل داشته باشد.این پروتکل می تواند به طور خودکار برای ساختارهایی مشتق شود که ویژگی های ذخیره شده آنها همه با پروتکل
TensorGroup
مطابقت دارد. نمیتوان آن را بهطور خودکار برای ساختارهایی که ویژگیهای آنها همه باTensorArrayProtocol
مطابقت دارند، به دلیل نیاز سازنده مشتق کرد (یعنی در چنین مواردی نمیتوان دانست که چگونهcount
خصوصیات ذخیرهشده را تجزیه کنیم).اعلامیه
public protocol TensorArrayProtocol
پروتکلی که انواعی را نشان می دهد که می توانند به و از
Array<CTensorHandle>
نگاشت شوند.هنگامی که یک
TensorGroup
به عنوان یک آرگومان برای یک عملیات تانسور استفاده می شود، به عنوان یک لیست آرگومان ارسال می شود که عناصر آن فیلدهای تانسور نوع هستند.هنگامی که یک
TensorGroup
در نتیجه یک عملیات تانسور برگردانده میشود، با فیلدهای تانسوری که روی نتایج تانسور عملیات تانسور تنظیم میشوند، مقداردهی اولیه میشود.اعلامیه
public protocol TensorGroup : TensorArrayProtocol
یک نوع داده پشتیبانی شده در x10.
اعلامیه
public protocol XLAScalarType