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 }
接線ベクトルを使用して初期化
zeroTangentVectorInitializer
。move(along: zeroTangentVector)
は変更しないでくださいself
。宣言
var zeroTangentVector: TangentVector { get }
宣言
@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
。宣言
パラメーター
l1
最初のレイヤー。
l2
2番目のレイヤー。
l3
3番目のレイヤー。
戻り値
順次適用後の最終層の出力。
戻る第一の層の入力であることを除いて、前の層の出力に一連の層を適用することによって計算された出力
self
。宣言
パラメーター
l1
最初のレイヤー。
l2
2番目のレイヤー。
l3
3番目のレイヤー。
l4
4番目のレイヤー。
戻り値
順次適用後の最終層の出力。
戻る第一の層の入力であることを除いて、前の層の出力に一連の層を適用することによって計算された出力
self
。宣言
パラメーター
l1
最初のレイヤー。
l2
2番目のレイヤー。
l3
3番目のレイヤー。
l4
3番目のレイヤー。
l5
5番目のレイヤー。
戻り値
順次適用後の最終層の出力。
戻る第一の層の入力であることを除いて、前の層の出力に一連の層を適用することによって計算された出力
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
2番目のレイヤー。
l3
3番目のレイヤー。
l4
3番目のレイヤー。
l5
5番目のレイヤー。
l6
6番目のレイヤー。
戻り値
順次適用後の最終層の出力。