Trình tối ưu hóa chung

public class GeneralOptimizer<Model: EuclideanDifferentiable>: Optimizer
where
  Model.TangentVector: VectorProtocol & ElementaryFunctions & KeyPathIterable,
  Model.TangentVector.VectorSpaceScalar == Float

Trình tối ưu hóa chung có thể thể hiện nhiều tối ưu hóa có thể. Trình tối ưu hóa bao gồm ánh xạ từ ParameterGroup đến ParameterGroupOptimizer. Trình tối ưu hóa này cũng chứa số lượng phần tử hoạt động trong tổng bản sao chéo. Điều này mang lại hiệu quả trong việc ngăn chặn nhiều lần lặp lại không hiệu quả trên gradient.

  • Tuyên ngôn

    public typealias Model = Model
  • Tập hợp các bước được thực hiện.

    Tuyên ngôn

    public var step: Int
  • Được sử dụng để xác định hệ số tỷ lệ của tổng bản sao chéo.

    Tuyên ngôn

    public var crossReplicaSumCount: Int?
  • trạng thái tối ưu hóa toàn cầu.

    Tuyên ngôn

    public var optimizerState: OptimizerState
  • Thiết bị hiện tại của mô hình. (Được sử dụng để xây dựng siêu tham số)

    Tuyên ngôn

    public var device: Device
  • Một mảng ánh xạ các chỉ số trọng số lồng nhau tới trình tối ưu hóa nhóm tham số? Trọng lượng tôi sẽ được tối ưu hóa bởi parameterGroups[parameterGroupIndices[i]]

    Tuyên ngôn

    public var parameterGroupIndices: [Int]
  • Một loạt các trình tối ưu hóa nhóm tham số.

    Tuyên ngôn

    public var parameterGroups: [ParameterGroupOptimizer]
  • Tốc độ học tập tổng thể của trình tối ưu hóa.

    Tuyên ngôn

    public var learningRate: Float { get set }
  • Tỷ lệ học tập tối ưu hóa nhóm trên mỗi tham số.

    Tuyên ngôn

    public var learningRates: [Float] { get set }
  • Xây dựng trình tối ưu hóa từ danh sách trình tối ưu hóa nhóm tham số và bộ chọn chia trọng số thành các nhóm tham số khác nhau. Đây là hàm tạo tổng quát nhất vì có nhiều cách để tạo vectơ chọn này.

    Tuyên ngôn

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Xây dựng trình tối ưu hóa từ một chuỗi các trình tối ưu hóa nhóm cho mỗi tham số và sau đó là trình tối ưu hóa nhóm tham số mặc định cuối cùng. Mảng [Bool] tính theo trọng số và đúng với các trọng số trong nhóm thông số đó. Nhóm tham số đầu tiên sẽ được sử dụng cho các tham số tiếp theo.

    Tuyên ngôn

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • Bước tối ưu hóa thực tế. Ánh xạ trên tất cả các tensor của gradient và áp dụng các trình tối ưu hóa theo trọng số được xác định bởi ParameterGroupOptimizer.

    Tuyên ngôn

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Sao chép trình tối ưu hóa vào thiết bị được chỉ định.

    Tuyên ngôn

    public required init(copying other: GeneralOptimizer, to device: Device)