GeralOptimizer

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

Otimizador geral que deve ser capaz de expressar múltiplas otimizações possíveis. O otimizador é composto por um mapeamento de ParameterGroup para ParameterGroupOptimizer. Este otimizador também contém o número de elementos trabalhando em uma soma de réplicas cruzadas. Isto é para eficiência, evitando múltiplas iterações ineficientes ao longo do gradiente.

  • Declaração

    public typealias Model = Model
  • O conjunto de passos dados.

    Declaração

    public var step: Int
  • Usado para determinar o fator de escala da soma da réplica cruzada.

    Declaração

    public var crossReplicaSumCount: Int?
  • estado do otimizador global.

    Declaração

    public var optimizerState: OptimizerState
  • Dispositivo atual do modelo. (Usado para construir hiperparâmetros)

    Declaração

    public var device: Device
  • Uma matriz mapeando índices de peso aninhados para otimizadores de grupos de parâmetros? O peso i será otimizado por parameterGroups[parameterGroupIndices[i]]

    Declaração

    public var parameterGroupIndices: [Int]
  • Uma matriz de otimizadores de grupos de parâmetros.

    Declaração

    public var parameterGroups: [ParameterGroupOptimizer]
  • Taxa geral de aprendizagem do otimizador.

    Declaração

    public var learningRate: Float { get set }
  • Taxas de aprendizado do otimizador de grupo por parâmetro.

    Declaração

    public var learningRates: [Float] { get set }
  • Constrói um otimizador a partir de uma lista de otimizadores de grupos de parâmetros e um seletor que divide os pesos em diferentes grupos de parâmetros. Este é o construtor mais geral, pois há muitas maneiras de construir este vetor seletor.

    Declaração

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Constrói um otimizador a partir de uma sequência de otimizadores por grupo de parâmetros e, em seguida, um otimizador de grupo de parâmetros padrão final. A matriz [Bool] é por peso e é verdadeira para os pesos nesse grupo de parâmetros. O primeiro parâmetroGroup será usado nos subsequentes.

    Declaração

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • A etapa real do otimizador. Mapeia todos os tensores do gradiente e aplica otimizadores por peso definidos por ParameterGroupOptimizer.

    Declaração

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Copia o otimizador para o dispositivo especificado.

    Declaração

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