GeneralOptimizer

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

Otimizador geral que deve ser capaz de expressar várias otimizações possíveis. O otimizador é composto de um mapeamento de ParameterGroup para ParameterGroupOptimizer. Este otimizador também contém o número de elementos trabalhando em uma soma de réplica cruzada. Isso é para eficiência para evitar várias iterações ineficientes no gradiente.

  • Declaração

    public typealias Model = Model
  • O conjunto de etapas realizadas.

    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 que mapeia índices de peso aninhados para otimizadores de grupo de parâmetros? Peso i será otimizado por parameterGroups[parameterGroupIndices[i]]

    Declaração

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

    Declaração

    public var parameterGroups: [ParameterGroupOptimizer]
  • Taxa de aprendizado geral 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 grupo 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 esse 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 de grupo por parâmetro e, em seguida, um otimizador de grupo de parâmetro padrão final. O [Bool] matriz é por peso e é verdadeiro para os pesos em que o grupo param. O primeiro grupo de parâmetros será usado sobre os 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)