<!--
{
  "availability" : [
    "*: -",
    "iOS: 14.0.0 -",
    "iPadOS: 14.0.0 -",
    "macCatalyst: -",
    "macOS: 11.0.0 -",
    "tvOS: 14.0.0 -",
    "visionOS: -",
    "watchOS: 7.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/BNNS/SGDMomentumOptimizer",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Accelerate"
    ],
    "preciseIdentifier" : "s:10Accelerate4BNNSO20SGDMomentumOptimizerV"
  },
  "title" : "BNNS.SGDMomentumOptimizer"
}
-->

# BNNS.SGDMomentumOptimizer

An optimizer that uses the stochastic gradient descent (SGD) with the momentum optimization method.

```
struct SGDMomentumOptimizer
```

## Topics

### Creating an SGD with Momentum Optimizer

[`init(learningRate: Float, momentum: Float, gradientScale: Float, regularizationScale: Float, clipsGradientsTo: ClosedRange<Float>?, usesNestrovMomentum: Bool, regularizationFunction: BNNSOptimizerRegularizationFunction, sgdMomentumVariant: BNNSOptimizerSGDMomentumVariant)`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/init(learningRate:momentum:gradientScale:regularizationScale:clipsGradientsTo:usesNestrovMomentum:regularizationFunction:sgdMomentumVariant:))

Returns a new stochastic gradient descent (SGD) with momentum optimizer object.

### Inspecting the Properties of an SGD with Momentum Optimizer

[`var learningRate: Float`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/learningRate)

A value that specifies the learning rate.

[`var momentum: Float`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/momentum)

The rate of momentum decay.

[`var gradientScale: Float`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/gradientScale)

A value that specifies the gradient scaling factor.

[`var regularizationScale: Float`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/regularizationScale)

A value that specifies the regularization scaling factor.

[`var gradientBounds: ClosedRange<Float>?`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/gradientBounds)

The values for the minimum and maximum gradients.

[`var gradientClipping: BNNS.GradientClipping`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/gradientClipping)

The gradient clipping.

[`enum GradientClipping`](/documentation/Accelerate/BNNS/GradientClipping)

Constants that describe clipping functions.

[`var usesNestrovMomentum: Bool`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/usesNestrovMomentum)

A Boolean value that specifies whether to use Nesterov momentum update.

[`var regularizationFunction: BNNSOptimizerRegularizationFunction`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/regularizationFunction)

The variable that specifies the regularization function.

[`var sgdMomentumVariant: BNNSOptimizerSGDMomentumVariant`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/sgdMomentumVariant)

The variable that specifies the momentum variant.

[`var accumulatorCountMultiplier: Int`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/accumulatorCountMultiplier)

The number of accumulators required for each parameter.

### Applying an Optimization Step

### Initializers

[`init(learningRate: Float, momentum: Float, gradientScale: Float, regularizationScale: Float, clipsGradientsTo: ClosedRange<Float>?, usesNesterovMomentum: Bool, regularizationFunction: BNNSOptimizerRegularizationFunction, sgdMomentumVariant: BNNSOptimizerSGDMomentumVariant)`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/init(learningRate:momentum:gradientScale:regularizationScale:clipsGradientsTo:usesNesterovMomentum:regularizationFunction:sgdMomentumVariant:))

[`init(learningRate: Float, momentum: Float, gradientScale: Float, regularizationScale: Float, gradientClipping: BNNS.GradientClipping, usesNesterovMomentum: Bool, regularizationFunction: BNNSOptimizerRegularizationFunction, sgdMomentumVariant: BNNSOptimizerSGDMomentumVariant)`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/init(learningRate:momentum:gradientScale:regularizationScale:gradientClipping:usesNesterovMomentum:regularizationFunction:sgdMomentumVariant:))

### Instance Properties

[`var usesNesterovMomentum: Bool`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer/usesNesterovMomentum)

## Relationships

### Conforms To

[`BNNSOptimizer`](/documentation/Accelerate/BNNSOptimizer)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)