GeneraleOptimizer

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

Ottimizzatore generale che dovrebbe essere in grado di esprimere molteplici ottimizzazioni possibili. L'ottimizzatore è composto da una mappatura da ParametroGroup a ParametroGroupOptimizer. Questo ottimizzatore contiene anche il numero di elementi che lavorano in una somma di repliche incrociate. Questo serve per l'efficienza per prevenire più iterazioni inefficienti sul gradiente.

  • Dichiarazione

    public typealias Model = Model
  • L'insieme dei passi compiuti.

    Dichiarazione

    public var step: Int
  • Utilizzato per determinare il fattore di scala della somma della replica incrociata.

    Dichiarazione

    public var crossReplicaSumCount: Int?
  • stato dell'ottimizzatore globale.

    Dichiarazione

    public var optimizerState: OptimizerState
  • Dispositivo attuale del modello. (Utilizzato per costruire iperparametri)

    Dichiarazione

    public var device: Device
  • Un array che mappa gli indici di peso annidati sugli ottimizzatori di gruppi di parametri? Il peso i sarà ottimizzato da parameterGroups[parameterGroupIndices[i]]

    Dichiarazione

    public var parameterGroupIndices: [Int]
  • Una serie di ottimizzatori di gruppi di parametri.

    Dichiarazione

    public var parameterGroups: [ParameterGroupOptimizer]
  • Tasso di apprendimento complessivo dell'ottimizzatore.

    Dichiarazione

    public var learningRate: Float { get set }
  • Tassi di apprendimento dell'ottimizzatore di gruppo per parametro.

    Dichiarazione

    public var learningRates: [Float] { get set }
  • Costruisce un ottimizzatore da un elenco di ottimizzatori di gruppi di parametri e un selettore che divide i pesi in diversi gruppi di parametri. Questo è il costruttore più generale poiché esistono molti modi per costruire questo vettore di selezione.

    Dichiarazione

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Costruisce un ottimizzatore da una sequenza di ottimizzatori di gruppi di parametri e quindi un ottimizzatore di gruppi di parametri predefinito finale. L'array [Bool] è per peso ed è vero per i pesi in quel gruppo di parametri. Il primo parametroGroup verrà utilizzato su quelli successivi.

    Dichiarazione

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • Il passaggio effettivo dell'ottimizzatore. Esegue il mapping su tutti i tensori del gradiente e applica gli ottimizzatori per peso definiti da ParametroGroupOptimizer.

    Dichiarazione

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Copia l'ottimizzatore sul dispositivo specificato.

    Dichiarazione

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