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 )
オプティマイザを指定されたデバイスにコピーします。
宣言
public required init(copying other: GeneralOptimizer, to device: Device)