GeneralOptimizer

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

Ogólny optymalizator, który powinien być w stanie wyrazić wiele możliwych optymalizacji. Optymalizator składa się z mapowania z ParameterGroup na ParameterGroupOptimizer. Optymalizator ten zawiera także liczbę elementów pracujących w sumie między replikami. Ma to na celu zapewnienie wydajności i zapobieganie wielokrotnym nieefektywnym iteracjom w gradiencie.

  • Deklaracja

    public typealias Model = Model
  • Zestaw podjętych kroków.

    Deklaracja

    public var step: Int
  • Służy do określenia współczynnika skalowania sumy replik krzyżowych.

    Deklaracja

    public var crossReplicaSumCount: Int?
  • globalny stan optymalizatora.

    Deklaracja

    public var optimizerState: OptimizerState
  • Aktualne urządzenie modelu. (Służy do konstruowania hiperparametrów)

    Deklaracja

    public var device: Device
  • Tablica mapująca zagnieżdżone indeksy wagowe na optymalizatory grup parametrów? Waga i zostanie zoptymalizowana przez parameterGroups[parameterGroupIndices[i]]

    Deklaracja

    public var parameterGroupIndices: [Int]
  • Tablica optymalizatorów grup parametrów.

    Deklaracja

    public var parameterGroups: [ParameterGroupOptimizer]
  • Ogólna szybkość uczenia się optymalizatora.

    Deklaracja

    public var learningRate: Float { get set }
  • Szybkość uczenia się optymalizatora grupy parametrów.

    Deklaracja

    public var learningRates: [Float] { get set }
  • Konstruuje optymalizator z listy optymalizatorów grup parametrów i selektora, który dzieli wagi na różne grupy parametrów. Jest to najbardziej ogólny konstruktor, ponieważ wektor selektora można skonstruować na wiele sposobów.

    Deklaracja

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Konstruuje optymalizator na podstawie sekwencji optymalizatorów grup parametrów, a następnie ostatecznego domyślnego optymalizatora grupy parametrów. Tablica [Bool] dotyczy wag i jest prawdziwa dla wag w tej grupie parametrów. Pierwsza grupa parametrów będzie używana nad kolejnymi.

    Deklaracja

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • Rzeczywisty krok optymalizatora. Mapuje wszystkie tensory gradientu i stosuje optymalizatory według wagi zdefiniowane przez ParameterGroupOptimizer.

    Deklaracja

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Kopiuje optymalizator na określone urządzenie.

    Deklaracja

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