Kế hoạch TensorKhách truy cập

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

    @discardableResult
    public func mapTensors(
      _ v1: inout Base, _ v2: Base, _ fn: (inout Tensor<Float>, Tensor<Float>, Int) -> Void
    ) -> Int
  • 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]
Có sẵn ở nơi `Base`: `KeyPathIterable`
  • 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)