<!--
{
  "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/AdamOptimizer",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "Accelerate"
    ],
    "preciseIdentifier" : "s:10Accelerate4BNNSO13AdamOptimizerV"
  },
  "title" : "BNNS.AdamOptimizer"
}
-->

# BNNS.AdamOptimizer

An optimizer that uses the Adam optimization algorithm.

```
struct AdamOptimizer
```

## Topics

### Creating an Adam Optimizer

[`init(learningRate: Float, beta1: Float, beta2: Float, timeStep: Float, epsilon: Float, gradientScale: Float, regularizationScale: Float, clipsGradientsTo: ClosedRange<Float>?, regularizationFunction: BNNSOptimizerRegularizationFunction)`](/documentation/Accelerate/BNNS/AdamOptimizer/init(learningRate:beta1:beta2:timeStep:epsilon:gradientScale:regularizationScale:clipsGradientsTo:regularizationFunction:))

Returns a new Adam optimizer object.

[`init(learningRate: Float, beta1: Float, beta2: Float, timeStep: Float, epsilon: Float, gradientScale: Float, regularizationScale: Float, gradientClipping: BNNS.GradientClipping, regularizationFunction: BNNSOptimizerRegularizationFunction, usesAMSGrad: Bool)`](/documentation/Accelerate/BNNS/AdamOptimizer/init(learningRate:beta1:beta2:timeStep:epsilon:gradientScale:regularizationScale:gradientClipping:regularizationFunction:usesAMSGrad:))

Returns a new Adam optimizer object with gradient clipped by value or clipped by norm.

### Inspecting the Properties of an Adam Optimizer

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

A value that specifies the learning rate.

[`var beta1: Float`](/documentation/Accelerate/BNNS/AdamOptimizer/beta1)

A value that specifies the first-moment constant, in the range `0` to `1`.

[`var beta2: Float`](/documentation/Accelerate/BNNS/AdamOptimizer/beta2)

A value that specifies the second-moment constant, in the range `0` to `1`.

[`var timeStep: Float`](/documentation/Accelerate/BNNS/AdamOptimizer/timeStep)

A value that’s at least `1` and represents the optimizer’s current time.

[`var epsilon: Float`](/documentation/Accelerate/BNNS/AdamOptimizer/epsilon)

The epsilon value you use to improve numerical stability.

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

A value that specifies the gradient scaling factor.

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

A value that specifies the regularization scaling factor.

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

The values for the minimum and maximum gradients.

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

The gradient clipping.

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

The variable that specifies the regularization function.

[`var usesAMSGrad: Bool`](/documentation/Accelerate/BNNS/AdamOptimizer/usesAMSGrad)

A Boolean value that specifies whether to use the AMSGrad variant.

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

The number of accumulators required for each parameter.

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

Constants that describe clipping functions.

### Applying an Optimization Step

## 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)