public struct TensorVisitorPlan<Base>
TensorVisitorPlan gần đúng [WritableKeyPath<Base, Tensor<Float>]
nhưng hiệu quả hơn. Điều này rất hữu ích khi viết các trình tối ưu hóa chung muốn ánh xạ theo độ dốc, các trọng số hiện có và một chỉ mục có thể được sử dụng để tìm các trọng số được lưu trữ phụ trợ. Điều này hiệu quả hơn một chút (~2 lần) nhưng có thể tốt hơn vì nó đánh đổi chi phí cao hơn một chút (tham chiếu con trỏ bổ sung) để không phải thực hiện công việc O(độ sâu_of_tree) được yêu cầu với một danh sách đơn giản để theo dõi từng KeyPath riêng lẻ.
Làm phẳng kế hoạch dưới dạng một
[WritableKeyPath<Base, Tensor<Float>]
.Tuyên ngôn
public var allTensorKeyPaths: [WritableKeyPath<Base, Tensor<Float>>] { get }
Thu thập hiệu quả tất cả các tensor.
Tuyên ngôn
public func allTensors(_ v: Base) -> [Tensor<Float>]
Ánh xạ hiệu quả hai giá trị thuộc loại
Base
và áp dụng chức năng ánh xạ. Trả về số tensor. Đối sốInt
bổ sung được cung cấp để cho phép lập chỉ mục vào danh sách phụ trợ của Tensors có cùng số lượng Tensor như kế hoạch.Tuyên ngôn
func populateMask<Base>(_ mask: inout [Bool], _ kp: WritableKeyPath<Base, Tensor<Float>>)
Tìm tất cả các khóa kết thúc bằng một đường dẫn khóa cụ thể.
Tuyên ngôn
public func keysEnding<Base>(with kp: WritableKeyPath<Base, Tensor<Float>>) -> [Bool]
Tuyên ngôn
func findFirstIndex<TrueBase, T>( _ rootKeyPath: WritableKeyPath<TrueBase, Base>, _ prefix: WritableKeyPath<TrueBase, T>, _ i: inout Int ) -> Bool
Tìm chỉ mục của đường dẫn phím đầu tiên bắt đầu bằng một tiền tố cụ thể. Lưu ý: Tất cả các lớp mảng đều hỗ trợ lập chỉ mục 1-quá-cuối.
Tuyên ngôn
func firstIndex<T>(withPrefix prefix: WritableKeyPath<Base, T>) -> Int
Tìm tất cả các chỉ mục khóa trong phạm vi được xác định bởi hai tiền tố KeyPath: [dưới, trên)
Tuyên ngôn
public func allKeysBetween<T, U>(lower: WritableKeyPath<Base, T>, upper: WritableKeyPath<Base, U>) -> [Bool]
Tạo một kế hoạch để truy cập tất cả các tensor trong một phiên bản cụ thể của
Base
. Kế hoạch này có thể chuyển sang các phiên bản có cấu trúc tương đương của Base.Tuyên ngôn
public init(_ obj: Base)