全般オプティマイザー

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]配列は重みごとであり、そのパラメータ グループの重みに当てはまります。最初のparameterGroupは、後続のparameterGroupよりも優先して使用されます。

    宣言

    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)