---
title: MPSNNOptimizerStochasticGradientDescent
framework: metalperformanceshaders
role: symbol
role_heading: Class
path: metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent
---

# MPSNNOptimizerStochasticGradientDescent

An optimization layer that performs a gradient descent with an optional momentum update.

## Declaration

```swift
class MPSNNOptimizerStochasticGradientDescent
```

## Topics

### Initializers

- [init(device:learningRate:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/init(device:learningrate:).md)
- [init(device:momentumScale:useNesterovMomentum:optimizerDescriptor:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/init(device:momentumscale:usenesterovmomentum:optimizerdescriptor:).md)
- [init(device:momentumScale:useNestrovMomentum:optimizerDescriptor:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/init(device:momentumscale:usenestrovmomentum:optimizerdescriptor:).md)

### Instance Properties

- [momentumScale](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/momentumscale.md)
- [useNesterovMomentum](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/usenesterovmomentum.md)
- [useNestrovMomentum](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/usenestrovmomentum.md)

### Instance Methods

- [encode(commandBuffer:batchNormalizationGradientState:batchNormalizationSourceState:inputMomentumVectors:resultState:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/encode(commandbuffer:batchnormalizationgradientstate:batchnormalizationsourcestate:inputmomentumvectors:resultstate:).md)
- [encode(commandBuffer:batchNormalizationState:inputMomentumVectors:resultState:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/encode(commandbuffer:batchnormalizationstate:inputmomentumvectors:resultstate:).md)
- [encode(commandBuffer:convolutionGradientState:convolutionSourceState:inputMomentumVectors:resultState:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/encode(commandbuffer:convolutiongradientstate:convolutionsourcestate:inputmomentumvectors:resultstate:).md)
- [encode(commandBuffer:inputGradientMatrix:inputValuesMatrix:inputMomentumMatrix:resultValuesMatrix:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/encode(commandbuffer:inputgradientmatrix:inputvaluesmatrix:inputmomentummatrix:resultvaluesmatrix:).md)
- [encode(commandBuffer:inputGradientVector:inputValuesVector:inputMomentumVector:resultValuesVector:)](metalperformanceshaders/mpsnnoptimizerstochasticgradientdescent/encode(commandbuffer:inputgradientvector:inputvaluesvector:inputmomentumvector:resultvaluesvector:).md)

## Relationships

### Inherits From

- [MPSNNOptimizer](metalperformanceshaders/mpsnnoptimizer.md)

### Conforms To

- [CVarArg](swift/cvararg.md)
- [CustomDebugStringConvertible](swift/customdebugstringconvertible.md)
- [CustomStringConvertible](swift/customstringconvertible.md)
- [Equatable](swift/equatable.md)
- [Hashable](swift/hashable.md)
- [NSCoding](foundation/nscoding.md)
- [NSCopying](foundation/nscopying.md)
- [NSObjectProtocol](objectivec/nsobjectprotocol.md)
- [NSSecureCoding](foundation/nssecurecoding.md)

## See Also

### Optimization Layers

- [MPSNNOptimizerAdam](metalperformanceshaders/mpsnnoptimizeradam.md)
- [MPSNNOptimizerRMSProp](metalperformanceshaders/mpsnnoptimizerrmsprop.md)
- [MPSNNOptimizer](metalperformanceshaders/mpsnnoptimizer.md)
- [MPSNNOptimizerDescriptor](metalperformanceshaders/mpsnnoptimizerdescriptor.md)
