متمایز

public protocol Differentiable

نوعي كه از لحاظ رياضي نشان دهنده چندگانه قابل تغيير است كه فضاهاي مماس آنها ابعاد متناهي دارند.

  • یک نوع نشان دهنده مشتقات ارزش متغیر است.

    از نظر ریاضی ، این معادل بسته مماس مانیفولد قابل تمایز است که با نوع متغیر نشان داده شده است.

    اعلام

    associatedtype TangentVector: Differentiable & AdditiveArithmetic
      where TangentVector.TangentVector == TangentVector
  • حرکت self در امتداد جهت داده شده است. در هندسه ریمانی، این معادل به نقشه نمایی، که حرکت است self را بر روی سطح نقشه برداری در امتداد بردار مماس داده شده است.

    اعلام

    mutating mutating func move(along direction: TangentVector)
  • بسته شدن است که تولید یک بردار مماس صفر، بدست آوردن اطلاعات لازم حداقل از self .

    move(along: zeroTangentVectorInitializer()) باید تغییر دهید self .

    در برخی موارد، بردار مماس صفر self برابر است با TangentVector.zero . در موارد دیگر، بردار مماس صفر بستگی به اطلاعات در self ، مانند شکل برای یک نوع آرایه n بعدی. برای برنامه نویسی مشتقپذیر، آن را بیشتر حافظه کارآمد برای تعریف یک سفارشی zeroTangentVectorInitializer اموال که بسته شدن است که قطاری و با استفاده از تنها اطلاعات لازم برای ایجاد یک بردار مماس صفر را برمی گرداند. مثلا:

    struct Vector {
        var scalars: [Float]
        var count: Int { scalars.count }
        init(scalars: [Float]) { ... }
        init(repeating repeatedElement: Float, count: Int) { ... }
    }
    
    extension Vector: AdditiveArithmetic { ... }
    
    extension Vector: Differentiable {
        typealias TangentVector = Vector
    
        @noDerivative
        var zeroTangentVectorInitializer: () -> TangentVector {
            let count = self.count
            return { TangentVector(repeating: 0, count: count) }
        }
    }
    

    اعلام

    var zeroTangentVectorInitializer: () -> TangentVector { get }
  • zeroTangentVector

    روش فرمت

    بردار مماس با استفاده از مقداردهی اولیه zeroTangentVectorInitializer . move(along: zeroTangentVector) باید تغییر دهید self .

    اعلام

    var zeroTangentVector: TangentVector { get }
  • اعلام

    @differentiable(wrt: self)
    func withRecomputationInPullbacks<Result : Differentiable>(
      _ body: @escaping @differentiable (Self) -> Result
    ) -> Result
  • withDerivative (_ :)

    روش فرمت

    اعمال بسته شدن داده شده به مشتق شده از self .

    بازده self مثل یک تابع هویت. وقتی مقدار بازگشتی در زمینه ای استفاده می شود که نسبت به آن متمایز است ، بسته بسته شده را بر مشتق ارزش بازگشت اعمال می کند.

    اعلام

    @differentiable(wrt: self)
    func withDerivative(_ body: @escaping (inout TangentVector) -> Void) -> Self
  • بازده خروجی محاسبه با استفاده از دنباله ای از لایه ها را به خروجی لایه قبلی است، با این تفاوت که ورودی لایه اول است self .

    اعلام

    @differentiable
    public func sequenced<L1: Layer, L2: Layer>(through l1: L1, _ l2: L2) -> L2.Output
    where L1.Input == Self, L1.Output == L2.Input

    مولفه های

    l1

    لایه اول.

    l2

    لایه دوم.

    مقدار بازگشتی

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

  • بازده خروجی محاسبه با استفاده از دنباله ای از لایه ها را به خروجی لایه قبلی است، با این تفاوت که ورودی لایه اول است self .

    اعلام

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer>(through l1: L1, _ l2: L2, _ l3: L3)
      -> L3.Output
    where L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input

    مولفه های

    l1

    لایه اول.

    l2

    لایه دوم.

    l3

    لایه سوم.

    مقدار بازگشتی

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

  • بازده خروجی محاسبه با استفاده از دنباله ای از لایه ها را به خروجی لایه قبلی است، با این تفاوت که ورودی لایه اول است self .

    اعلام

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4
    ) -> L4.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input,
      L3.Output == L4.Input

    مولفه های

    l1

    لایه اول.

    l2

    لایه دوم.

    l3

    لایه سوم.

    l4

    لایه چهارم.

    مقدار بازگشتی

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

  • بازده خروجی محاسبه با استفاده از دنباله ای از لایه ها را به خروجی لایه قبلی است، با این تفاوت که ورودی لایه اول است self .

    اعلام

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer, L5: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4, _ l5: L5
    ) -> L5.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input, L3.Output == L4.Input,
      L4.Output == L5.Input

    مولفه های

    l1

    لایه اول.

    l2

    لایه دوم.

    l3

    لایه سوم.

    l4

    لایه سوم.

    l5

    لایه پنجم.

    مقدار بازگشتی

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

  • بازده خروجی محاسبه با استفاده از دنباله ای از لایه ها را به خروجی لایه قبلی است، با این تفاوت که ورودی لایه اول است self .

    اعلام

    @differentiable
    public func sequenced<L1: Layer, L2: Layer, L3: Layer, L4: Layer, L5: Layer, L6: Layer>(
      through l1: L1, _ l2: L2, _ l3: L3, _ l4: L4, _ l5: L5, _ l6: L6
    ) -> L6.Output
    where
      L1.Input == Self, L1.Output == L2.Input, L2.Output == L3.Input, L3.Output == L4.Input,
      L4.Output == L5.Input, L5.Output == L6.Input

    مولفه های

    l1

    لایه اول.

    l2

    لایه دوم.

    l3

    لایه سوم.

    l4

    لایه سوم.

    l5

    لایه پنجم.

    l6

    لایه ششم.

    مقدار بازگشتی

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