GénéralOptimiseur

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

Optimiseur général qui doit être capable d'exprimer plusieurs optimisations possibles. L'optimiseur est composé d'un mappage de ParameterGroup vers ParameterGroupOptimizer. Cet optimiseur contient également le nombre d'éléments travaillant dans une somme de répliques croisées. C'est pour des raisons d'efficacité afin d'éviter plusieurs itérations inefficaces sur le dégradé.

  • Déclaration

    public typealias Model = Model
  • L’ensemble des mesures prises.

    Déclaration

    public var step: Int
  • Utilisé pour déterminer le facteur d’échelle de la somme des répliques croisées.

    Déclaration

    public var crossReplicaSumCount: Int?
  • état global de l’optimiseur.

    Déclaration

    public var optimizerState: OptimizerState
  • Appareil actuel du modèle. (Utilisé pour construire des hyperparamètres)

    Déclaration

    public var device: Device
  • Un tableau mappant des indices de poids imbriqués à des optimiseurs de groupes de paramètres ? Le poids i sera optimisé par parameterGroups[parameterGroupIndices[i]]

    Déclaration

    public var parameterGroupIndices: [Int]
  • Un tableau d’optimiseurs de groupes de paramètres.

    Déclaration

    public var parameterGroups: [ParameterGroupOptimizer]
  • Taux d'apprentissage global de l'optimiseur.

    Déclaration

    public var learningRate: Float { get set }
  • Taux d'apprentissage de l'optimiseur de groupe par paramètre.

    Déclaration

    public var learningRates: [Float] { get set }
  • Construit un optimiseur à partir d'une liste d'optimiseurs de groupes de paramètres et d'un sélecteur qui divise les poids en différents groupes de paramètres. Il s’agit du constructeur le plus général car il existe de nombreuses façons de construire ce vecteur sélecteur.

    Déclaration

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Construit un optimiseur à partir d'une séquence d'optimiseurs de groupe par paramètre, puis un optimiseur final de groupe de paramètres par défaut. Le tableau [Bool] est par poids et est vrai pour les poids de ce groupe de paramètres. Le premier groupe de paramètres sera utilisé par rapport aux suivants.

    Déclaration

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • L’étape réelle de l’optimiseur. Cartographie tous les tenseurs du gradient et applique les optimiseurs par poids définis par ParameterGroupOptimizer.

    Déclaration

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Copie l'optimiseur sur le périphérique spécifié.

    Déclaration

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