ভিন্ন

public protocol Differentiable

একটি প্রকার যা গাণিতিকভাবে একটি ভিন্নধর্মী বহুগুণের প্রতিনিধিত্ব করে যার স্পর্শীয় স্থানগুলি সীমিত-মাত্রিক।

  • একটি প্রকার যা একটি ভিন্ন মানের মান ডেরিভেটিভ উপস্থাপন করে।

    গাণিতিকভাবে, এটি ডিফারেনশিয়াল টাইপ দ্বারা প্রতিনিধিত্ব করা ভিন্ন ভিন্ন বহুগুণের স্পর্শক বান্ডেলের সমতুল্য।

    ঘোষণা

    associatedtype TangentVector: Differentiable & AdditiveArithmetic
      where TangentVector.TangentVector == TangentVector
  • মানসম্পন্ন self দেওয়া দিক বরাবর। Riemannian জ্যামিতি, এই সূচকীয় মানচিত্র, যা চলে আসে সমতূল্য self দেওয়া স্পর্শক ভেক্টর বরাবর geodesic পৃষ্ঠের উপর।

    ঘোষণা

    mutating mutating func move(along direction: TangentVector)
  • একজন অবসান করে একটি শূন্য স্পর্শক ভেক্টর উৎপন্ন, থেকে ন্যূনতম প্রয়োজনীয় তথ্য ক্যাপচার self

    move(along: zeroTangentVectorInitializer()) সংশোধন করা উচিত নয় self

    কিছু কিছু ক্ষেত্রে, এর শূন্য স্পর্শক ভেক্টর self সমান TangentVector.zero । অন্যান্য ক্ষেত্রে, শূন্য স্পর্শক ভেক্টর তথ্যের উপর নির্ভর self , যেমন একটি এন-মাত্রিক অ্যারে টাইপ জন্য আকৃতি হিসাবে। Differentiable প্রোগ্রামিং, এটি আরো মেমরি সাশ্রয়ী একটি কাস্টম সংজ্ঞায়িত হয় 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 }
  • শূন্য স্পর্শক ভেক্টর

    সম্প্রসারণ পদ্ধতি

    একটি স্পর্শক ভেক্টর ব্যবহার সক্রিয়া zeroTangentVectorInitializermove(along: zeroTangentVector) সংশোধন করা উচিত নয় self

    ঘোষণা

    var zeroTangentVector: TangentVector { get }
  • withRecomputationInPullbacks (_ :)

    সম্প্রসারণ পদ্ধতি

    ঘোষণা

    @differentiable(wrt: self)
    func withRecomputationInPullbacks<Result : Differentiable>(
      _ body: @escaping @differentiable (Self) -> Result
    ) -> Result
  • সঙ্গে ডেরিভেটিভ (_ :)

    সম্প্রসারণ পদ্ধতি

    ডেরিভেটিভ দেওয়া অবসান প্রয়োগ 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

    ষষ্ঠ স্তর।

    ফেরত মূল্য

    অনুক্রমিক প্রয়োগের পর চূড়ান্ত স্তরের আউটপুট।