public struct TensorVisitorPlan<Base>
TensorVisitorPlan מקרוב את [WritableKeyPath<Base, Tensor<Float>]
אבל הוא יעיל יותר. זה שימושי לכתיבת מטובי אופטימיזציה גנריים שרוצים למפות את ההדרגות, את המשקלים הקיימים ואינדקס שניתן להשתמש בו כדי למצוא משקלים מאוחסנים בעזרה. זה מעט יותר יעיל (~2x) אבל זה יכול להיות טוב יותר מכיוון שהוא מחליף תקורה מעט יותר גבוהה (הפניית מצביע נוספת) על כך שלא צריך לעשות עבודת O(depth_of_tree) שנדרשת עם רשימה פשוטה כדי לעקוב אחר כל KeyPath בנפרד.
חלקו את התוכנית כיחידה
[WritableKeyPath<Base, Tensor<Float>]
.הַצהָרָה
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
אסוף ביעילות את כל הטנזורים.
הַצהָרָה
public func allTensors(_ v: Base) -> [Tensor<Float>]
מיפוי יעיל של שני ערכים מסוג
Base
והחל פונקציית מיפוי. מחזירה את מספר הטנזורים. הארגומנט הנוסףInt
מסופק כדי לאפשר אינדקס לרשימת עזר של Tensor עם אותה ספירת Tensor כמו התוכנית.הַצהָרָה
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: [תחתון, עליון)
הַצהָרָה
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
יוצר תוכנית לבקר את כל הטנזורים במופע מסוים של
Base
. תוכנית זו ניתנת להעברה לגרסאות מקבילות מבחינה מבנית של Base.הַצהָרָה
public init(_ obj: Base)