Optimizador general

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

Optimizador general que debería poder expresar múltiples optimizaciones posibles. El optimizador se compone de una asignación de ParameterGroup a ParameterGroupOptimizer. Este optimizador también contiene la cantidad de elementos que trabajan en una suma de réplicas cruzadas. Esto es por motivos de eficiencia para evitar múltiples iteraciones ineficientes sobre el gradiente.

  • Declaración

    public typealias Model = Model
  • El conjunto de pasos dados.

    Declaración

    public var step: Int
  • Se utiliza para determinar el factor de escala de la suma de réplicas cruzadas.

    Declaración

    public var crossReplicaSumCount: Int?
  • Estado del optimizador global.

    Declaración

    public var optimizerState: OptimizerState
  • Dispositivo actual del modelo. (Utilizado para construir hiperparámetros)

    Declaración

    public var device: Device
  • ¿Una matriz que asigna índices de peso anidados a optimizadores de grupos de parámetros? El peso i será optimizado por parameterGroups[parameterGroupIndices[i]]

    Declaración

    public var parameterGroupIndices: [Int]
  • Una serie de optimizadores de grupos de parámetros.

    Declaración

    public var parameterGroups: [ParameterGroupOptimizer]
  • Tasa de aprendizaje general del optimizador.

    Declaración

    public var learningRate: Float { get set }
  • Tasas de aprendizaje del optimizador de grupo por parámetro.

    Declaración

    public var learningRates: [Float] { get set }
  • Construye un optimizador a partir de una lista de optimizadores de grupos de parámetros y un selector que divide los pesos en diferentes grupos de parámetros. Este es el constructor más general ya que hay muchas formas de construir este vector selector.

    Declaración

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Construye un optimizador a partir de una secuencia de optimizadores de grupo por parámetro y luego un optimizador de grupo de parámetros predeterminado final. La matriz [Bool] es por peso y es verdadera para los pesos en ese grupo de parámetros. El primer grupo de parámetros se utilizará sobre los siguientes.

    Declaración

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • El paso real del optimizador. Se asigna a todos los tensores del gradiente y aplica optimizadores por peso definidos por ParameterGroupOptimizer.

    Declaración

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Copia el optimizador al dispositivo especificado.

    Declaración

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