public struct TensorVisitorPlan<Base>
TensorVisitorPlan은 [WritableKeyPath<Base, Tensor<Float>]
에 가깝지만 더 효율적입니다. 이는 그라디언트, 기존 가중치 및 보조적으로 저장된 가중치를 찾는 데 사용할 수 있는 인덱스를 매핑하려는 일반 최적화 프로그램을 작성하는 데 유용합니다. 이는 약간 더 효율적이지만(~2x) 각 개별 KeyPath를 추적하기 위해 일반 목록에 필요한 O(length_of_tree) 작업을 수행할 필요가 없기 때문에 약간 더 높은 오버헤드(추가 포인터 역참조)를 상쇄하므로 더 나을 수 있습니다.
계획을 단일
[WritableKeyPath<Base, Tensor<Float>]
로 평면화합니다.선언
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
모든 텐서를 효율적으로 수집합니다.
선언
public func allTensors(_ v: Base) -> [Tensor<Float>]
선언
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
특정 키 경로로 끝나는 모든 키를 찾습니다.
선언
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
선언
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
특정 접두사로 시작하는 첫 번째 키 경로의 인덱스를 찾습니다. 참고: 모든 배열 레이어는 1부터 끝까지 인덱싱을 지원합니다.
선언
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
두 개의 KeyPath 접두사([lower, upper)로 정의된 범위에서 모든 키 인덱스를 찾습니다.
선언
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Base
의 특정 인스턴스에 있는 모든 텐서를 방문할 계획을 만듭니다. 이 계획은 구조적으로 동등한 Base 버전으로 이전 가능합니다.선언
public init(_ obj: Base)