پروتکل ها

پروتکل های زیر به صورت جهانی در دسترس هستند.

  • نقاط سفارشی سازی را برای الگوریتم های 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
  • یک لایه شبکه عصبی

    انواعی که با 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