ОбщийОптимизатор

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

Общий оптимизатор, который должен иметь возможность выражать несколько возможных оптимизаций. Оптимизатор состоит из сопоставления ParameterGroup с ParameterGroupOptimizer. Этот оптимизатор также содержит количество элементов, работающих в сумме перекрестных реплик. Это сделано для повышения эффективности, чтобы предотвратить несколько неэффективных итераций по градиенту.

  • Декларация

    public typealias Model = Model
  • Набор предпринятых шагов.

    Декларация

    public var step: Int
  • Используется для определения коэффициента масштабирования суммы перекрестных реплик.

    Декларация

    public var crossReplicaSumCount: Int?
  • состояние глобального оптимизатора.

    Декларация

    public var optimizerState: OptimizerState
  • Текущее устройство модели. (Используется для построения гиперпараметров)

    Декларация

    public var device: Device
  • Массив, сопоставляющий вложенные индексы веса с оптимизаторами групп параметров? Вес i будет оптимизирован parameterGroups[parameterGroupIndices[i]]

    Декларация

    public var parameterGroupIndices: [Int]
  • Массив оптимизаторов групп параметров.

    Декларация

    public var parameterGroups: [ParameterGroupOptimizer]
  • Общая скорость обучения оптимизатора.

    Декларация

    public var learningRate: Float { get set }
  • Скорость обучения группового оптимизатора по параметрам.

    Декларация

    public var learningRates: [Float] { get set }
  • Создает оптимизатор из списка оптимизаторов групп параметров и селектора, который делит веса на разные группы параметров. Это наиболее общий конструктор, поскольку существует множество способов создания этого вектора селектора.

    Декларация

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Создает оптимизатор из последовательности оптимизаторов для каждой группы параметров, а затем окончательного оптимизатора группы параметров по умолчанию. Массив [Bool] предназначен для каждого веса и верен для весов в этой группе параметров. Первая группа параметров будет использоваться поверх последующих.

    Декларация

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • Фактический шаг оптимизатора. Сопоставляет все тензоры градиента и применяет оптимизаторы по весу, определенные параметром ParameterGroupOptimizer.

    Декларация

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Копирует оптимизатор на указанное устройство.

    Декларация

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