Pengoptimal Umum

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

Pengoptimal umum yang harus mampu mengungkapkan beberapa kemungkinan pengoptimalan. Pengoptimal terdiri dari pemetaan dari ParameterGroup ke ParameterGroupOptimizer. Pengoptimal ini juga berisi jumlah elemen yang bekerja dalam jumlah replika silang. Hal ini untuk efisiensi guna mencegah beberapa iterasi yang tidak efisien pada gradien.

  • Pernyataan

    public typealias Model = Model
  • Serangkaian langkah yang diambil.

    Pernyataan

    public var step: Int
  • Digunakan untuk menentukan faktor penskalaan jumlah replika silang.

    Pernyataan

    public var crossReplicaSumCount: Int?
  • keadaan pengoptimal global.

    Pernyataan

    public var optimizerState: OptimizerState
  • Perangkat model saat ini. (Digunakan untuk membuat hyperparameter)

    Pernyataan

    public var device: Device
  • Array yang memetakan indeks bobot bersarang ke pengoptimal grup parameter? Bobot i akan dioptimalkan dengan parameterGroups[parameterGroupIndices[i]]

    Pernyataan

    public var parameterGroupIndices: [Int]
  • Serangkaian pengoptimal grup parameter.

    Pernyataan

    public var parameterGroups: [ParameterGroupOptimizer]
  • Kecepatan pembelajaran keseluruhan pengoptimal.

    Pernyataan

    public var learningRate: Float { get set }
  • Kecepatan pembelajaran pengoptimal grup per parameter.

    Pernyataan

    public var learningRates: [Float] { get set }
  • Membuat pengoptimal dari daftar pengoptimal grup parameter dan pemilih yang membagi bobot ke dalam grup parameter berbeda. Ini adalah konstruktor paling umum karena ada banyak cara untuk membuat vektor pemilih ini.

    Pernyataan

    public init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroupIndices: [Int],
      parameterGroups: [ParameterGroupOptimizer]
    )
  • Membangun pengoptimal dari urutan pengoptimal grup per parameter dan kemudian pengoptimal grup parameter default akhir. Array [Bool] adalah per bobot dan berlaku untuk bobot dalam grup param tersebut. ParameterGroup pertama akan digunakan pada parameter berikutnya.

    Pernyataan

    public convenience init(
      for model: __shared Model,
      _ kpPlan: TensorVisitorPlan<Model.TangentVector>,
      parameterGroups: ([Bool], ParameterGroupOptimizer)...,
      defaultOptimizer: ParameterGroupOptimizer
    )
  • Langkah pengoptimal sebenarnya. Memetakan seluruh tensor gradien dan menerapkan pengoptimal per bobot yang ditentukan oleh ParameterGroupOptimizer.

    Pernyataan

    public func update(_ model: inout Model, along direction: Model.TangentVector)
  • Menyalin pengoptimal ke perangkat yang ditentukan.

    Pernyataan

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