public struct TensorVisitorPlan<Base>
TensorVisitorPlan अनुमानित है [WritableKeyPath<Base, Tensor<Float>]
लेकिन अधिक कुशल है। यह जेनेरिक ऑप्टिमाइज़र लिखने के लिए उपयोगी है जो ग्रेडिएंट्स, मौजूदा वज़न और एक इंडेक्स पर मैप करना चाहते हैं जिसका उपयोग सहायक रूप से संग्रहीत वज़न खोजने के लिए किया जा सकता है। यह थोड़ा अधिक कुशल (~2x) है, लेकिन यह बेहतर हो सकता है क्योंकि यह O(depth_of_tree) कार्य नहीं करने के लिए थोड़ा अधिक ओवरहेड्स (अतिरिक्त सूचक डीरेफ़रेंस) का व्यापार करता है, जो प्रत्येक व्यक्तिगत कीपाथ को ट्रैक करने के लिए एक सादे सूची के साथ आवश्यक है।
योजना को एकल
[WritableKeyPath<Base, Tensor<Float>]
के रूप में समतल करें।घोषणा
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
सभी टेंसरों को कुशलतापूर्वक एकत्र करें।
घोषणा
public func allTensors(_ v: Base) -> [Tensor<Float>]
Base
प्रकार के दो मानों को कुशलतापूर्वक मैप करें और मैपिंग फ़ंक्शन लागू करें। टेंसरों की संख्या लौटाता है. योजना के समान टेन्सर गणना के साथ टेन्सर की सहायक सूची में अनुक्रमण की अनुमति देने के लिए अतिरिक्तInt
तर्क प्रदान किया जाता है।घोषणा
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
दो कीपाथ उपसर्गों द्वारा परिभाषित सीमा में सभी कुंजी सूचकांक खोजें: [निचला, ऊपरी)
घोषणा
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Base
के एक विशेष उदाहरण में सभी टेंसरों पर जाने की योजना बनाता है। यह योजना बेस के संरचनात्मक रूप से समकक्ष संस्करणों में हस्तांतरणीय है।घोषणा
public init(_ obj: Base)