پروتکل ها

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

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