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
캡처 및 용도에만 필요한 정보가 0 접선 벡터를 만들 수있는 폐쇄을 반환 속성을. 예를 들어: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
두 번째 레이어입니다.
l3
세 번째 레이어입니다.
반환 값
순차적 적용 후 최종 레이어의 출력.
반환 제 층의 입력되는 것을 제외하고는 이전 층의 출력 계층의 시퀀스를 적용하여 계산 된 출력
self
.선언
매개변수
l1
첫 번째 레이어입니다.
l2
두 번째 레이어입니다.
l3
세 번째 레이어입니다.
l4
네 번째 레이어.
반환 값
순차적 적용 후 최종 레이어의 출력.
반환 제 층의 입력되는 것을 제외하고는 이전 층의 출력 계층의 시퀀스를 적용하여 계산 된 출력
self
.선언
매개변수
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
여섯 번째 레이어.
반환 값
순차적 적용 후 최종 레이어의 출력.