<!--
{
  "documentType" : "article",
  "framework" : "Accelerate",
  "identifier" : "/documentation/Accelerate/classic-bnns-api",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Classic BNNS API"
}
-->

# Classic BNNS API

## Topics

### N-dimensional array descriptor essentials

[`struct BNNSLayerData`](/documentation/Accelerate/BNNSLayerData)

A structure containing common layer parameters.

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

Constants that describe the size and data layout of an n-dimensional array descriptor.

[`struct BNNSDataLayout`](/documentation/Accelerate/BNNSDataLayout)

Constants that describe the data type of an n-dimensional array.

[`struct BNNSDataType`](/documentation/Accelerate/BNNSDataType)

BNNS Data Types.

[`struct BNNSNDArrayDescriptor`](/documentation/Accelerate/BNNSNDArrayDescriptor)

A structure that describes the shape, stride, data type, and, optionally, the memory location of an n-dimensional array.

[`func BNNSDataLayoutGetRank(BNNSDataLayout) -> Int`](/documentation/Accelerate/BNNSDataLayoutGetRank(_:))

### General filters

[`typealias BNNSFilter`](/documentation/Accelerate/BNNSFilter)

An opaque type that represents a filter.

  <doc://com.apple.accelerate/documentation/Accelerate/applying-filters>

[`class Layer`](/documentation/Accelerate/BNNS/Layer)

The base class for layer objects that wrap filters and manage deinitialization.

[`class UnaryLayer`](/documentation/Accelerate/BNNS/UnaryLayer)

The base class for layers that accept a single input.

[`class BinaryLayer`](/documentation/Accelerate/BNNS/BinaryLayer)

The base class for layers that accept two inputs.

[`struct BNNSFilterParameters`](/documentation/Accelerate/BNNSFilterParameters)

A structure that contains common filter parameters.

[`func BNNSFilterDestroy(BNNSFilter?)`](/documentation/Accelerate/BNNSFilterDestroy(_:))

Destroys the specified filter, releasing all resources allocated for it.

[`typealias BNNSAlloc`](/documentation/Accelerate/BNNSAlloc)

A type-alias for a user-provided memory allocation function.

[`typealias BNNSFree`](/documentation/Accelerate/BNNSFree)

A type-alias for a user-provided memory deallocation function.

### Activation layers

[`func BNNSFilterCreateVectorActivationLayer(UnsafePointer<BNNSVectorDescriptor>, UnsafePointer<BNNSVectorDescriptor>, UnsafePointer<BNNSActivation>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateVectorActivationLayer(_:_:_:_:))

[`class ActivationLayer`](/documentation/Accelerate/BNNS/ActivationLayer)

A layer object that wraps an activation filter and manages its deinitialization.

[`struct BNNSActivationFunction`](/documentation/Accelerate/BNNSActivationFunction)

Constants that describe activation functions.

[`struct BNNSActivation`](/documentation/Accelerate/BNNSActivation)

A set of parameters that describe common activation functions.

[`struct BNNSLayerParametersActivation`](/documentation/Accelerate/BNNSLayerParametersActivation)

A set of parameters that define an activation layer.

[`func BNNSFilterCreateLayerActivation(UnsafePointer<BNNSLayerParametersActivation>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerActivation(_:_:))

Returns a new activation layer.

[`func BNNSDirectApplyActivationBatch(UnsafePointer<BNNSLayerParametersActivation>, UnsafePointer<BNNSFilterParameters>?, Int, Int, Int) -> Int32`](/documentation/Accelerate/BNNSDirectApplyActivationBatch(_:_:_:_:_:))

Applies an activation filter to a set of input objects, writing out the result to a set of output objects.

[`static func applyActivation(activation: BNNS.ActivationFunction, axes: [Int], input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, batchSize: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyActivation(activation:axes:input:output:batchSize:filterParameters:))

Applies an activation function on the specified axes.

[`static func applyActivation(activation: BNNS.ActivationFunction, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, batchSize: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyActivation(activation:input:output:batchSize:filterParameters:))

Applies the specified activation function.

### Arithmetic layers

[`class UnaryArithmeticLayer`](/documentation/Accelerate/BNNS/UnaryArithmeticLayer)

A layer object that wraps a unary arithmetic filter and manages its deinitialization.

[`class BinaryArithmeticLayer`](/documentation/Accelerate/BNNS/BinaryArithmeticLayer)

A layer object that wraps a binary arithmetic filter and manages its deinitialization.

[`class TernaryArithmeticLayer`](/documentation/Accelerate/BNNS/TernaryArithmeticLayer)

A layer object that wraps a ternary arithmetic filter and manages its deinitialization.

[`struct BNNSDescriptorType`](/documentation/Accelerate/BNNSDescriptorType)

Constants that describe the input and output types of an arithmetic operation.

[`struct BNNSArithmeticUnary`](/documentation/Accelerate/BNNSArithmeticUnary)

A structure that contains the input and output of an arithmetic operation with a single input.

[`struct BNNSArithmeticBinary`](/documentation/Accelerate/BNNSArithmeticBinary)

A structure that contains the inputs and output of an arithmetic operation with two inputs.

[`struct BNNSArithmeticTernary`](/documentation/Accelerate/BNNSArithmeticTernary)

A structure that contains the inputs and output of an arithmetic operation with three inputs.

[`struct BNNSArithmeticFunction`](/documentation/Accelerate/BNNSArithmeticFunction)

Constants that define arithmetic operations.

[`struct BNNSLayerParametersArithmetic`](/documentation/Accelerate/BNNSLayerParametersArithmetic)

A structure that contains the parameters of an arithmetic layer.

[`func BNNSFilterCreateLayerArithmetic(UnsafePointer<BNNSLayerParametersArithmetic>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerArithmetic(_:_:))

Returns a new arithmetic layer.

[`func BNNSArithmeticFilterApplyBatch(BNNSFilter?, Int, Int, UnsafeMutablePointer<UnsafeRawPointer>, UnsafePointer<Int>, UnsafeMutableRawPointer, Int) -> Int32`](/documentation/Accelerate/BNNSArithmeticFilterApplyBatch(_:_:_:_:_:_:_:))

Applies an arithmetic filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSArithmeticFilterApplyBackwardBatch(BNNSFilter?, Int, Int, UnsafeMutablePointer<UnsafeRawPointer?>?, UnsafePointer<Int>?, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>>, UnsafePointer<Int>, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int) -> Int32`](/documentation/Accelerate/BNNSArithmeticFilterApplyBackwardBatch(_:_:_:_:_:_:_:_:_:_:_:))

Applies an arithmetic filter backward to generate input gradients.

### Compute norm functions

[`static func computeNorm(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axes: [Int]?) throws`](/documentation/Accelerate/BNNS/computeNorm(input:output:axes:))

Computes the Euclidean norm and writes the result to the output tensor.

[`static func computeNormBackward(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axes: [Int]?, outputGradient: BNNSNDArrayDescriptor, generatingInputGradient: BNNSNDArrayDescriptor) throws`](/documentation/Accelerate/BNNS/computeNormBackward(input:output:axes:outputGradient:generatingInputGradient:))

Backpropogates gradients for the compute norm function.

[`func BNNSComputeNorm(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, BNNSNormType, UInt32) -> Int32`](/documentation/Accelerate/BNNSComputeNorm(_:_:_:_:))

Computes the specified norm over an entire tensor or the specified axes.

[`func BNNSComputeNormBackward(UnsafeRawPointer, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafeRawPointer, UnsafePointer<BNNSNDArrayDescriptor>, BNNSNormType, UInt32) -> Int32`](/documentation/Accelerate/BNNSComputeNormBackward(_:_:_:_:_:_:))

Backpropogates gradients for the compute norm function.

[`struct BNNSNormType`](/documentation/Accelerate/BNNSNormType)

Constants that describe norm types.

### Convolution layers

[`struct BNNSConvolutionLayerParameters`](/documentation/Accelerate/BNNSConvolutionLayerParameters)

A structure containing convolution parameters.

[`func BNNSFilterCreateConvolutionLayer(UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSConvolutionLayerParameters>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateConvolutionLayer(_:_:_:_:))

Returns a convolution filter, initialized with input, output, layer, and filter parameters.

[`class ConvolutionLayer`](/documentation/Accelerate/BNNS/ConvolutionLayer)

A layer object that wraps a convolution filter and manages its deinitialization.

[`struct BNNSLayerParametersConvolution`](/documentation/Accelerate/BNNSLayerParametersConvolution)

A structure that contains the parameters of a convolution layer.

[`func BNNSFilterCreateLayerConvolution(UnsafePointer<BNNSLayerParametersConvolution>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerConvolution(_:_:))

Returns a new convolution layer.

[`func BNNSFilterCreateLayerTransposedConvolution(UnsafePointer<BNNSLayerParametersConvolution>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerTransposedConvolution(_:_:))

Returns a new transposed convolution layer.

### Crop-resize layers

[`class CropResizeLayer`](/documentation/Accelerate/BNNS/CropResizeLayer)

A layer object that wraps a crop-resize filter and manages its deinitialization.

[`func BNNSCropResize(UnsafePointer<BNNSLayerParametersCropResize>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSCropResize(_:_:_:_:_:))

Extracts and resizes regions of interest of an input tensor.

[`func BNNSCropResizeBackward(UnsafePointer<BNNSLayerParametersCropResize>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSCropResizeBackward(_:_:_:_:_:))

Applies a crop-resize filter backward to generate gradients.

[`struct BNNSLayerParametersCropResize`](/documentation/Accelerate/BNNSLayerParametersCropResize)

A set of parameters that describe a crop-resize operation.

[`struct BNNSBoxCoordinateMode`](/documentation/Accelerate/BNNSBoxCoordinateMode)

Constants that define the convention to specify the four bounding box coordinates for crop-resize operations.

[`struct BNNSLinearSamplingMode`](/documentation/Accelerate/BNNSLinearSamplingMode)

Constants that specify how a crop-resize layer samples a grid.

### Dropout layers

[`class DropoutLayer`](/documentation/Accelerate/BNNS/DropoutLayer)

A layer object that wraps a dropout filter and manages its deinitialization.

[`struct BNNSLayerParametersDropout`](/documentation/Accelerate/BNNSLayerParametersDropout)

A structure that contains the parameters of a dropout layer.

[`func BNNSFilterCreateLayerDropout(UnsafePointer<BNNSLayerParametersDropout>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerDropout(_:_:))

Returns a new dropout layer.

### Embedding layers

[`class EmbeddingLayer`](/documentation/Accelerate/BNNS/EmbeddingLayer)

A layer object that wraps an embedding filter and manages its deinitialization.

[`struct BNNSLayerParametersEmbedding`](/documentation/Accelerate/BNNSLayerParametersEmbedding)

A structure that contains the parameters of an embedding layer.

[`func BNNSFilterCreateLayerEmbedding(UnsafePointer<BNNSLayerParametersEmbedding>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerEmbedding(_:_:))

Returns a new embedding layer.

### Fully connected layers

[`struct BNNSFullyConnectedLayerParameters`](/documentation/Accelerate/BNNSFullyConnectedLayerParameters)

A structure containing fully connected layer parameters.

[`func BNNSFilterCreateFullyConnectedLayer(UnsafePointer<BNNSVectorDescriptor>, UnsafePointer<BNNSVectorDescriptor>, UnsafePointer<BNNSFullyConnectedLayerParameters>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateFullyConnectedLayer(_:_:_:_:))

Returns a fully connected filter, initialized with input, output, layer, and filter parameters.

[`class FullyConnectedLayer`](/documentation/Accelerate/BNNS/FullyConnectedLayer)

A layer object that wraps a fully connected filter and manages its deinitialization.

[`struct BNNSLayerParametersFullyConnected`](/documentation/Accelerate/BNNSLayerParametersFullyConnected)

A structure that contains the parameters of a fully connected layer.

[`func BNNSFilterCreateLayerFullyConnected(UnsafePointer<BNNSLayerParametersFullyConnected>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerFullyConnected(_:_:))

Returns a new fully connected layer.

### Fused layers

[`protocol FusableLayerParameters`](/documentation/Accelerate/FusableLayerParameters)

[`class FusedParametersLayer`](/documentation/Accelerate/BNNS/FusedParametersLayer)

A layer object that wraps a fused layer and manages its deinitialization.

[`class FusedConvolutionNormalizationLayer`](/documentation/Accelerate/BNNS/FusedConvolutionNormalizationLayer)

A layer object that wraps a fused, convolution normalization layer and manages its deinitialization.

[`class FusedFullyConnectedNormalizationLayer`](/documentation/Accelerate/BNNS/FusedFullyConnectedNormalizationLayer)

A layer object that wraps a fused, fully connected normalization layer and manages its deinitialization.

[`struct BNNSFilterType`](/documentation/Accelerate/BNNSFilterType)

Constants that define the component filters of a fused layer.

[`func BNNSFilterCreateFusedLayer(Int, UnsafePointer<BNNSFilterType>, UnsafeMutablePointer<UnsafeRawPointer>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateFusedLayer(_:_:_:_:))

Returns a new fused layer.

[`func BNNSFusedFilterApplyBatch(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeMutableRawPointer, Int, Bool) -> Int32`](/documentation/Accelerate/BNNSFusedFilterApplyBatch(_:_:_:_:_:_:_:))

Applies a fused filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSFusedFilterApplyMultiInputBatch(BNNSFilter?, Int, Int, UnsafeMutablePointer<UnsafeRawPointer>, UnsafePointer<Int>, UnsafeMutableRawPointer, Int, Bool) -> Int32`](/documentation/Accelerate/BNNSFusedFilterApplyMultiInputBatch(_:_:_:_:_:_:_:_:))

Applies a multiple-input fused filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSFusedFilterApplyBackwardBatch(BNNSFilter?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>?>?) -> Int32`](/documentation/Accelerate/BNNSFusedFilterApplyBackwardBatch(_:_:_:_:_:_:_:_:_:_:_:))

Applies a fused filter backward to generate input gradients.

[`func BNNSFusedFilterApplyBackwardMultiInputBatch(BNNSFilter?, Int, Int, UnsafeMutablePointer<UnsafeRawPointer?>?, UnsafePointer<Int>?, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>>, UnsafePointer<Int>, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>?>?) -> Int32`](/documentation/Accelerate/BNNSFusedFilterApplyBackwardMultiInputBatch(_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a multiple-input fused filter backward to generate input gradients.

### Gather and scatter operations

  <doc://com.apple.accelerate/documentation/Accelerate/calculating-the-dominant-colors-in-an-image>

[`static func gather(input: BNNSNDArrayDescriptor, indices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/gather(input:indices:output:axis:filterParameters:))

Gathers the elements of a tensor along a single axis.

[`static func gatherND(input: BNNSNDArrayDescriptor, indices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/gatherND(input:indices:output:filterParameters:))

Gathers the slices of a tensor.

[`static func scatter(input: BNNSNDArrayDescriptor, indices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int, reductionFunction: BNNS.ReductionFunction, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/scatter(input:indices:output:axis:reductionFunction:filterParameters:))

Scatters the elements of a tensor along a single axis.

[`static func scatterND(input: BNNSNDArrayDescriptor, indices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, reductionFunction: BNNS.ReductionFunction, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/scatterND(input:indices:output:reductionFunction:filterParameters:))

Scatters the slices of a tensor.

[`func BNNSGather(Int, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSGather(_:_:_:_:_:))

Gathers the elements of a tensor along a single axis.

[`func BNNSGatherND(UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSGatherND(_:_:_:_:))

Gathers the slices of a tensor.

[`func BNNSScatter(Int, BNNSReduceFunction, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSScatter(_:_:_:_:_:_:))

Scatters the elements of a tensor along a single axis.

[`func BNNSScatterND(BNNSReduceFunction, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSScatterND(_:_:_:_:_:))

Scatters the slices of a tensor.

### Loss layers

[`class LossLayer`](/documentation/Accelerate/BNNS/LossLayer)

A layer object that wraps a loss filter and manages its deinitialization.

[`struct BNNSLossFunction`](/documentation/Accelerate/BNNSLossFunction)

Constants that describe loss functions.

[`struct BNNSLossReductionFunction`](/documentation/Accelerate/BNNSLossReductionFunction)

Constants that describe reduction functions used by a loss layer.

[`struct BNNSLayerParametersLossBase`](/documentation/Accelerate/BNNSLayerParametersLossBase)

A structure that contains the parameters of a loss layer.

[`struct BNNSLayerParametersLossHuber`](/documentation/Accelerate/BNNSLayerParametersLossHuber)

A structure that contains the parameters of a Huber loss layer.

[`struct BNNSLayerParametersLossSigmoidCrossEntropy`](/documentation/Accelerate/BNNSLayerParametersLossSigmoidCrossEntropy)

A structure that contains the parameters of a sigmoid cross entropy loss layer.

[`struct BNNSLayerParametersLossSoftmaxCrossEntropy`](/documentation/Accelerate/BNNSLayerParametersLossSoftmaxCrossEntropy)

A structure that contains the parameters of a softmax cross entropy loss layer.

[`struct BNNSLayerParametersLossYolo`](/documentation/Accelerate/BNNSLayerParametersLossYolo)

A structure that contains the parameters of a You Only Look Once (YOLO) loss layer.

[`func BNNSFilterCreateLayerLoss(UnsafeRawPointer, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerLoss(_:_:))

Returns a new loss layer.

[`func BNNSLossFilterApplyBatch(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeRawPointer, Int, UnsafeRawPointer?, Int, UnsafeMutableRawPointer, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int) -> Int32`](/documentation/Accelerate/BNNSLossFilterApplyBatch(_:_:_:_:_:_:_:_:_:_:_:))

Applies a loss filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSLossFilterApplyBackwardBatch(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeRawPointer, Int, UnsafeRawPointer?, Int, UnsafePointer<BNNSNDArrayDescriptor>, Int) -> Int32`](/documentation/Accelerate/BNNSLossFilterApplyBackwardBatch(_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a loss filter backward to generate gradients.

### K-nearest neighbors calculation

[`struct NearestNeighbors`](/documentation/Accelerate/BNNS/NearestNeighbors)

A structure that calculates k-nearest neighbors.

[`typealias BNNSNearestNeighbors`](/documentation/Accelerate/BNNSNearestNeighbors)

A k-nearest neighbors object.

[`func BNNSCreateNearestNeighbors(UInt32, UInt32, UInt32, BNNSDataType, UnsafePointer<BNNSFilterParameters>?) -> BNNSNearestNeighbors?`](/documentation/Accelerate/BNNSCreateNearestNeighbors(_:_:_:_:_:))

Returns a new k-nearest neighbors object.

[`func BNNSNearestNeighborsLoad(BNNSNearestNeighbors?, UInt32, UnsafeRawPointer) -> Int32`](/documentation/Accelerate/BNNSNearestNeighborsLoad(_:_:_:))

Adds new sample data to a k-nearest neighbors object.

[`func BNNSNearestNeighborsGetInfo(BNNSNearestNeighbors?, Int32, UnsafeMutablePointer<Int32>?, UnsafeMutableRawPointer?) -> Int32`](/documentation/Accelerate/BNNSNearestNeighborsGetInfo(_:_:_:_:))

Calculates the sorted indices and Euclidean distances of the k-nearest neighbors to a specified sample data point.

[`func BNNSDestroyNearestNeighbors(BNNSNearestNeighbors?)`](/documentation/Accelerate/BNNSDestroyNearestNeighbors(_:))

Destroys a k-nearest neighbors object.

### Matrix multiplication

[`func BNNSDirectApplyBroadcastMatMul(Bool, Bool, Float, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?)`](/documentation/Accelerate/BNNSDirectApplyBroadcastMatMul(_:_:_:_:_:_:_:))

Applies a broadcast matrix multiplication operation directly to two input matrices.

[`class BroadcastMatrixMultiplyLayer`](/documentation/Accelerate/BNNS/BroadcastMatrixMultiplyLayer)

A layer object that wraps a broadcast matrix multiply filter and manages its deinitialization.

[`struct BNNSLayerParametersBroadcastMatMul`](/documentation/Accelerate/BNNSLayerParametersBroadcastMatMul)

A set of parameters that define a broadcast matrix multiply layer.

[`func BNNSFilterCreateLayerBroadcastMatMul(UnsafePointer<BNNSLayerParametersBroadcastMatMul>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerBroadcastMatMul(_:_:))

Returns a new broadcast matrix multiply layer.

[`func BNNSMatMulWorkspaceSize(Bool, Bool, Float, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int`](/documentation/Accelerate/BNNSMatMulWorkspaceSize(_:_:_:_:_:_:_:))

Returns the workspace size that a matrix multiply operation requires.

[`func BNNSMatMul(Bool, Bool, Float, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutableRawPointer?, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSMatMul(_:_:_:_:_:_:_:_:))

Applies a matrix multiplication operation directly to two input matrices.

[`static func applyMatrixMultiplication(inputA: BNNSNDArrayDescriptor, transposed: Bool, inputB: BNNSNDArrayDescriptor, transposed: Bool, output: BNNSNDArrayDescriptor, alpha: Float, workspace: UnsafeMutableRawBufferPointer?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyMatrixMultiplication(inputA:transposed:inputB:transposed:output:alpha:workspace:filterParameters:))

Performs a matrix multiplication operation directly on two input matrices.

[`static func matrixMultiplicationWorkspaceSize(inputA: BNNSNDArrayDescriptor, transposed: Bool, inputB: BNNSNDArrayDescriptor, transposed: Bool, output: BNNSNDArrayDescriptor, alpha: Float, filterParameters: BNNSFilterParameters?) -> Int?`](/documentation/Accelerate/BNNS/matrixMultiplicationWorkspaceSize(inputA:transposed:inputB:transposed:output:alpha:filterParameters:))

Returns the workspace size that a matrix multiply operation requires.

### Multihead attention layers

[`struct BNNSMHAProjectionParameters`](/documentation/Accelerate/BNNSMHAProjectionParameters)

A structure that contains multihead attention projection parameters.

[`struct BNNSLayerParametersMultiheadAttention`](/documentation/Accelerate/BNNSLayerParametersMultiheadAttention)

A structure that contains the parameters of a multihead attention layer.

[`func BNNSFilterCreateLayerMultiheadAttention(UnsafePointer<BNNSLayerParametersMultiheadAttention>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerMultiheadAttention(_:_:))

Returns a new multihead attention layer.

[`func BNNSApplyMultiheadAttention(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeRawPointer, Int, UnsafePointer<BNNSNDArrayDescriptor>?, Int, UnsafeRawPointer, Int, UnsafeMutableRawPointer, Int, UnsafePointer<BNNSNDArrayDescriptor>?, UnsafeMutablePointer<Int>?, UnsafeMutableRawPointer?, UnsafeMutablePointer<Int>?, UnsafeMutableRawPointer?) -> Int32`](/documentation/Accelerate/BNNSApplyMultiheadAttention(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a mutihead attention filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSApplyMultiheadAttentionBackward(BNNSFilter?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSMHAProjectionParameters>?, UnsafeRawPointer?, Int, UnsafePointer<BNNSNDArrayDescriptor>?, Int, UnsafeMutablePointer<BNNSMHAProjectionParameters>?, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSMHAProjectionParameters>?, UnsafePointer<BNNSNDArrayDescriptor>?, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSMHAProjectionParameters>, Int, UnsafeMutableRawPointer?, UnsafeMutablePointer<Int>?, UnsafeMutableRawPointer?) -> Int32`](/documentation/Accelerate/BNNSApplyMultiheadAttentionBackward(_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a multihead attention filter backward to generate gradients.

### Normalization layers

[`class NormalizationLayer`](/documentation/Accelerate/BNNS/NormalizationLayer)

A layer object that wraps a normalization filter and manages its deinitialization.

[`struct BNNSLayerParametersNormalization`](/documentation/Accelerate/BNNSLayerParametersNormalization)

A structure that contains the parameters of a normalization layer.

[`func BNNSFilterCreateLayerNormalization(BNNSFilterType, UnsafePointer<BNNSLayerParametersNormalization>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerNormalization(_:_:_:))

Returns a new normalization layer.

[`func BNNSNormalizationFilterApplyBatch(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeMutableRawPointer, Int, Bool) -> Int32`](/documentation/Accelerate/BNNSNormalizationFilterApplyBatch(_:_:_:_:_:_:_:))

Applies a normalization filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSNormalizationFilterApplyBackwardBatch(BNNSFilter?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, UnsafeMutablePointer<BNNSNDArrayDescriptor>?) -> Int32`](/documentation/Accelerate/BNNSNormalizationFilterApplyBackwardBatch(_:_:_:_:_:_:_:_:_:_:))

Applies a normalization filter backward to generate gradients.

### Optimizers

[`struct AdamOptimizer`](/documentation/Accelerate/BNNS/AdamOptimizer)

An optimizer that uses the Adam optimization algorithm.

[`struct AdamWOptimizer`](/documentation/Accelerate/BNNS/AdamWOptimizer)

An optimizer that uses the AdamW optimization algorithm.

[`struct RMSPropOptimizer`](/documentation/Accelerate/BNNS/RMSPropOptimizer)

An optimizer that uses the root mean square propagation (RMSProp) optimization method.

[`struct SGDMomentumOptimizer`](/documentation/Accelerate/BNNS/SGDMomentumOptimizer)

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

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

[`struct BNNSOptimizerRegularizationFunction`](/documentation/Accelerate/BNNSOptimizerRegularizationFunction)

A structure that contains optimizer regularization functions.

[`struct BNNSOptimizerAdamFields`](/documentation/Accelerate/BNNSOptimizerAdamFields)

A structure that contains the fields of an Adam optimizer.

[`struct BNNSOptimizerAdamWithClippingFields`](/documentation/Accelerate/BNNSOptimizerAdamWithClippingFields)

A structure that contains the fields of an Adam or AdamW optimizer that optionally clips the gradient by value or by norm.

[`struct BNNSOptimizerRMSPropFields`](/documentation/Accelerate/BNNSOptimizerRMSPropFields)

A structure that contains the fields of a root mean square propagation (RMSProp) optimizer.

[`struct BNNSOptimizerRMSPropWithClippingFields`](/documentation/Accelerate/BNNSOptimizerRMSPropWithClippingFields)

A structure that contains the fields of a root mean square propagation (RMSProp) optimizer that optionally clips the gradient by value or by norm.

[`struct BNNSOptimizerSGDMomentumFields`](/documentation/Accelerate/BNNSOptimizerSGDMomentumFields)

A structure that contains the fields of a stochastic gradient descent (SGD) with momentum optimizer.

[`struct BNNSOptimizerSGDMomentumWithClippingFields`](/documentation/Accelerate/BNNSOptimizerSGDMomentumWithClippingFields)

A structure that contains the fields of a stochastic gradient descent (SGD) with momentum optimizer that optionally clips the gradient by value or by norm.

[`struct BNNSOptimizerSGDMomentumVariant`](/documentation/Accelerate/BNNSOptimizerSGDMomentumVariant)

Constants that define SGD momentum variants.

[`func BNNSOptimizerStep(BNNSOptimizerFunction, UnsafeRawPointer, Int, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>>, UnsafeMutablePointer<UnsafePointer<BNNSNDArrayDescriptor>>, UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>?>?, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSOptimizerStep(_:_:_:_:_:_:_:))

Applies a single optimization step to one or more parameters.

[`struct BNNSOptimizerFunction`](/documentation/Accelerate/BNNSOptimizerFunction)

A structure that contains optimizer functions.

### Padding layers

[`class PaddingLayer`](/documentation/Accelerate/BNNS/PaddingLayer)

A layer object that wraps a padding filter and manages its deinitialization.

[`struct BNNSPaddingMode`](/documentation/Accelerate/BNNSPaddingMode)

Constants that define padding modes.

[`struct BNNSLayerParametersPadding`](/documentation/Accelerate/BNNSLayerParametersPadding)

A structure that contains the parameters of a padding layer.

[`func BNNSFilterCreateLayerPadding(UnsafePointer<BNNSLayerParametersPadding>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerPadding(_:_:))

Returns a new loss layer.

### Permute layers

[`class PermuteLayer`](/documentation/Accelerate/BNNS/PermuteLayer)

A layer object that wraps a permute filter and manages its deinitialization.

[`struct BNNSLayerParametersPermute`](/documentation/Accelerate/BNNSLayerParametersPermute)

A structure that contains the parameters of a permute layer.

[`func BNNSFilterCreateLayerPermute(UnsafePointer<BNNSLayerParametersPermute>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerPermute(_:_:))

Returns a new permute layer.

[`func BNNSPermuteFilterApplyBackwardBatch(BNNSFilter?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafePointer<BNNSNDArrayDescriptor>, Int) -> Int32`](/documentation/Accelerate/BNNSPermuteFilterApplyBackwardBatch(_:_:_:_:_:_:))

Applies a permute filter backward to generate gradients.

### Pooling layers

[`struct BNNSPoolingLayerParameters`](/documentation/Accelerate/BNNSPoolingLayerParameters)

A structure containing pooling layer parameters.

[`func BNNSFilterCreatePoolingLayer(UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSImageStackDescriptor>, UnsafePointer<BNNSPoolingLayerParameters>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreatePoolingLayer(_:_:_:_:))

Returns a pooling  filter, initialized with input, output, layer, and filter parameters.

[`class PoolingLayer`](/documentation/Accelerate/BNNS/PoolingLayer)

A layer object that wraps a pooling filter and manages its deinitialization.

[`struct BNNSPoolingFunction`](/documentation/Accelerate/BNNSPoolingFunction)

Constants that describe pooling functions.

[`var BNNSPoolingFunctionAverage: BNNSPoolingFunction`](/documentation/Accelerate/BNNSPoolingFunctionAverage)

[`var BNNSPoolingFunctionMax: BNNSPoolingFunction`](/documentation/Accelerate/BNNSPoolingFunctionMax)

[`struct BNNSLayerParametersPooling`](/documentation/Accelerate/BNNSLayerParametersPooling)

A structure that contains the parameters of a pooling layer.

[`func BNNSFilterCreateLayerPooling(UnsafePointer<BNNSLayerParametersPooling>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerPooling(_:_:))

Returns a new pooling layer.

[`func BNNSPoolingFilterApplyBatch(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeMutableRawPointer, Int, UnsafeMutablePointer<Int>?, Int) -> Int32`](/documentation/Accelerate/BNNSPoolingFilterApplyBatch(_:_:_:_:_:_:_:_:))

Applies a pooling filter to a set of input objects, writing the result to a set of output objects.

[`func BNNSPoolingFilterApplyBackwardBatch(BNNSFilter?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, UnsafePointer<Int>?, Int) -> Int32`](/documentation/Accelerate/BNNSPoolingFilterApplyBackwardBatch(_:_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a pooling filter backward to generate gradients.

[`func BNNSPoolingFilterApplyBatchEx(BNNSFilter?, Int, UnsafeRawPointer, Int, UnsafeMutableRawPointer, Int, BNNSDataType, UnsafeMutableRawPointer?, Int) -> Int32`](/documentation/Accelerate/BNNSPoolingFilterApplyBatchEx(_:_:_:_:_:_:_:_:_:))

Applies a pooling filter to a set of input objects with support for multiple data types for indices.

[`func BNNSPoolingFilterApplyBackwardBatchEx(BNNSFilter?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int, UnsafeRawPointer?, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, BNNSDataType, UnsafeRawPointer?, Int) -> Int32`](/documentation/Accelerate/BNNSPoolingFilterApplyBackwardBatchEx(_:_:_:_:_:_:_:_:_:_:_:_:_:_:))

Applies a pooling filter backward to generate gradients with support for multiple data types for indices.

### Quantization functions

[`static func quantize(batchSize: Int, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int?, scale: BNNSNDArrayDescriptor?, bias: BNNSNDArrayDescriptor?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/quantize(batchSize:input:output:axis:scale:bias:filterParameters:))

Quantizes the input tensor and writes the result to the output tensor.

[`static func dequantize(batchSize: Int, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int?, scale: BNNSNDArrayDescriptor?, bias: BNNSNDArrayDescriptor?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/dequantize(batchSize:input:output:axis:scale:bias:filterParameters:))

Dequantizes the input tensor and writes the result to the output tensor.

[`struct BNNSQuantizerFunction`](/documentation/Accelerate/BNNSQuantizerFunction)

Constants that describe quantization functions.

[`struct BNNSLayerParametersQuantization`](/documentation/Accelerate/BNNSLayerParametersQuantization)

A structure that contains the parameters of a quantization layer.

[`func BNNSDirectApplyQuantizer(UnsafePointer<BNNSLayerParametersQuantization>, UnsafePointer<BNNSFilterParameters>?, Int, Int, Int) -> Int32`](/documentation/Accelerate/BNNSDirectApplyQuantizer(_:_:_:_:_:))

Applies a quantization layer directly to two input matrices.

### Random number generation

[`class RandomGenerator`](/documentation/Accelerate/BNNS/RandomGenerator)

A random number generator.

[`func BNNSCreateRandomGenerator(BNNSRandomGeneratorMethod, UnsafePointer<BNNSFilterParameters>?) -> BNNSRandomGenerator?`](/documentation/Accelerate/BNNSCreateRandomGenerator(_:_:))

Returns a new random number generator using an internally generated random seed.

[`func BNNSCreateRandomGeneratorWithSeed(BNNSRandomGeneratorMethod, UInt64, UnsafePointer<BNNSFilterParameters>?) -> BNNSRandomGenerator?`](/documentation/Accelerate/BNNSCreateRandomGeneratorWithSeed(_:_:_:))

Returns a new random number generator using the specified seed.

[`struct BNNSRandomGeneratorMethod`](/documentation/Accelerate/BNNSRandomGeneratorMethod)

Constants that describe random number generation methods.

[`typealias BNNSRandomGenerator`](/documentation/Accelerate/BNNSRandomGenerator)

A pointer to a random number generator object.

[`func BNNSRandomFillUniformInt(BNNSRandomGenerator?, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int64, Int64) -> Int32`](/documentation/Accelerate/BNNSRandomFillUniformInt(_:_:_:_:))

Fills the specified tensor with random integer values from the continuous uniform distribution within a range.

[`func BNNSRandomFillUniformFloat(BNNSRandomGenerator?, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Float, Float) -> Int32`](/documentation/Accelerate/BNNSRandomFillUniformFloat(_:_:_:_:))

Fills the specified tensor with random floating-point values from the continuous uniform distribution within a range.

[`func BNNSRandomFillNormalFloat(BNNSRandomGenerator?, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Float, Float) -> Int32`](/documentation/Accelerate/BNNSRandomFillNormalFloat(_:_:_:_:))

Fills the specified tensor with random floating-point values mapped to a normal distribution.

[`func BNNSRandomFillCategoricalFloat(BNNSRandomGenerator?, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, Bool) -> Int32`](/documentation/Accelerate/BNNSRandomFillCategoricalFloat(_:_:_:_:))

Fills the specified tensor with random values from the categorical distributions with the given event probabilities.

[`func BNNSRandomGeneratorStateSize(BNNSRandomGenerator?) -> Int`](/documentation/Accelerate/BNNSRandomGeneratorStateSize(_:))

Returns the state size, in bytes, of a random number generator.

[`func BNNSRandomGeneratorGetState(BNNSRandomGenerator?, Int, UnsafeMutableRawPointer) -> Int32`](/documentation/Accelerate/BNNSRandomGeneratorGetState(_:_:_:))

Returns the state of a random number generator.

[`func BNNSRandomGeneratorSetState(BNNSRandomGenerator?, Int, UnsafeMutableRawPointer) -> Int32`](/documentation/Accelerate/BNNSRandomGeneratorSetState(_:_:_:))

Sets the state of a random number generator.

[`func BNNSDestroyRandomGenerator(BNNSRandomGenerator?)`](/documentation/Accelerate/BNNSDestroyRandomGenerator(_:))

Destroys a random number generator.

### Recurrent layers

  <doc://com.apple.accelerate/documentation/Accelerate/using-long-short-term-memory-layers-lstm>

[`struct BNNSLSTMDataDescriptor`](/documentation/Accelerate/BNNSLSTMDataDescriptor)

A structure that contains the input-output, hidden, and cell state n-dimensional array descriptors for a long short-term memory (LSTM) layer.

[`struct BNNSLSTMGateDescriptor`](/documentation/Accelerate/BNNSLSTMGateDescriptor)

A structure that describes a long short-term memory (LSTM) gate layer.

[`struct BNNSLayerFlags`](/documentation/Accelerate/BNNSLayerFlags)

Options that control the behavior of a long short-term memory (LSTM) layer.

[`struct BNNSLayerParametersLSTM`](/documentation/Accelerate/BNNSLayerParametersLSTM)

A structure that contains the parameters of a long short-term memory (LSTM) layer.

[`func BNNSComputeLSTMTrainingCacheCapacity(UnsafePointer<BNNSLayerParametersLSTM>) -> Int`](/documentation/Accelerate/BNNSComputeLSTMTrainingCacheCapacity(_:))

Returns the minimum bytes capacity of the training cache buffer a long short-term memory (LSTM) layer uses when it’s applied.

[`func BNNSDirectApplyLSTMBatchTrainingCaching(UnsafePointer<BNNSLayerParametersLSTM>, UnsafePointer<BNNSFilterParameters>?, UnsafeMutableRawPointer?, Int) -> Int32`](/documentation/Accelerate/BNNSDirectApplyLSTMBatchTrainingCaching(_:_:_:_:))

Applies a long short-term memory (LSTM) layer directly to an input.

[`func BNNSDirectApplyLSTMBatchBackward(UnsafePointer<BNNSLayerParametersLSTM>, UnsafePointer<BNNSLayerParametersLSTM>, UnsafePointer<BNNSFilterParameters>?, UnsafeRawPointer?, Int) -> Int32`](/documentation/Accelerate/BNNSDirectApplyLSTMBatchBackward(_:_:_:_:_:))

Applies a long short-term memory (LSTM) filter backward to generate gradients.

### Reduction layers

[`class ReductionLayer`](/documentation/Accelerate/BNNS/ReductionLayer)

A layer object that wraps a reduction filter and manages its deinitialization.

[`static func applyReduction(BNNS.ReductionFunction, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, weights: BNNSNDArrayDescriptor?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyReduction(_:input:output:weights:filterParameters:))

Applies the specified reduction function.

[`struct BNNSReduceFunction`](/documentation/Accelerate/BNNSReduceFunction)

Constants that describe reduction functions.

[`struct BNNSLayerParametersReduction`](/documentation/Accelerate/BNNSLayerParametersReduction)

A set of parameters that define a reduction layer.

[`func BNNSFilterCreateLayerReduction(UnsafePointer<BNNSLayerParametersReduction>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerReduction(_:_:))

Returns a new reduction layer.

[`func BNNSDirectApplyReduction(UnsafePointer<BNNSLayerParametersReduction>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSDirectApplyReduction(_:_:))

Applies a reduction operation directly to an input tensor.

### Resize layers

[`class ResizeLayer`](/documentation/Accelerate/BNNS/ResizeLayer)

A layer object that wraps a resize filter and manages its deinitialization.

[`struct BNNSInterpolationMethod`](/documentation/Accelerate/BNNSInterpolationMethod)

Constants that describe interpolation methods.

[`struct BNNSLayerParametersResize`](/documentation/Accelerate/BNNSLayerParametersResize)

A structure that contains the parameters of a resize layer.

[`func BNNSFilterCreateLayerResize(UnsafePointer<BNNSLayerParametersResize>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerResize(_:_:))

Returns a new resize layer.

### Sparse layers

[`func BNNSNDArrayGetDataSize(UnsafePointer<BNNSNDArrayDescriptor>) -> Int`](/documentation/Accelerate/BNNSNDArrayGetDataSize(_:))

Returns the size, in bytes, that an array descriptor requires.

[`func BNNSNDArrayFullyConnectedSparsifySparseCOO(UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSSparsityParameters>?, Int, UnsafeMutableRawPointer?, Int, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSNDArrayFullyConnectedSparsifySparseCOO(_:_:_:_:_:_:_:_:_:))

Converts a sparse tensor from the standardized coordinate list (COO) layout to a device-specific sparse layout that BNNS fully connected layers use.

[`func BNNSNDArrayFullyConnectedSparsifySparseCSR(UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSSparsityParameters>?, Int, UnsafeMutableRawPointer?, Int, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSNDArrayFullyConnectedSparsifySparseCSR(_:_:_:_:_:_:_:_:_:_:))

Converts a sparse tensor from the standardized compressed sparse row (CSR) layout to a device-specific sparse layout that BNNS fully connected layers use.

[`static func sparsify(batchSize: Int, inputLayout: BNNS.SparseLayout, inputDenseShape: BNNSNDArrayDescriptor, inputValues: BNNSNDArrayDescriptor, output: inout BNNSNDArrayDescriptor, sparseParameters: BNNS.SparseParameters?, workspace: UnsafeMutableRawBufferPointer?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/FullyConnectedLayer/sparsify(batchSize:inputLayout:inputDenseShape:inputValues:output:sparseParameters:workspace:filterParameters:))

Converts a sparse tensor from a standardized sparse layout to a device-specific sparse layout that Fully Connected uses.

[`struct SparseParameters`](/documentation/Accelerate/BNNS/SparseParameters)

A data structure that provides a hint to the sparsity function.

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

Constants that specify standardized sparse layouts that BNNS can convert to opaque.

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

Constants that specify patterns in the sparsity.

[`var BNNSSparsityTypeUnstructured: BNNSSparsityType`](/documentation/Accelerate/BNNSSparsityTypeUnstructured)

### Tensor comparison layers

[`static func compare(BNNSNDArrayDescriptor, BNNSNDArrayDescriptor, using: BNNS.RelationalOperator, output: BNNSNDArrayDescriptor) throws`](/documentation/Accelerate/BNNS/compare(_:_:using:output:))

Performs an elementwise comparison of two array descriptors using the specified relational operator.

[`struct BNNSRelationalOperator`](/documentation/Accelerate/BNNSRelationalOperator)

Constants that describe relational operations.

[`func BNNSCompareTensor(UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, BNNSRelationalOperator, UnsafeMutablePointer<BNNSNDArrayDescriptor>) -> Int32`](/documentation/Accelerate/BNNSCompareTensor(_:_:_:_:))

Returns a tensor of Boolean type by comparing or performing a logical operation between two inputs.

### Tensor contraction layers

[`struct BNNSLayerParametersTensorContraction`](/documentation/Accelerate/BNNSLayerParametersTensorContraction)

A structure that contains the parameters of a tensor-contraction layer.

[`func BNNSFilterCreateLayerTensorContraction(UnsafePointer<BNNSLayerParametersTensorContraction>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerTensorContraction(_:_:))

Returns a new tensor-contraction layer.

### Top-k layers

[`static func applyTopK(k: Int, input: BNNSNDArrayDescriptor, bestValues: BNNSNDArrayDescriptor, bestIndices: BNNSNDArrayDescriptor, axis: Int, batchSize: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyTopK(k:input:bestValues:bestIndices:axis:batchSize:filterParameters:))

Applies a top-k filter directly to an input.

[`static func applyInTopK(k: Int, input: BNNSNDArrayDescriptor, testIndices: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axis: Int, batchSize: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/applyInTopK(k:input:testIndices:output:axis:batchSize:filterParameters:))

Applies an in-top-k filter directly to an input.

### Top-k layers

[`func BNNSDirectApplyTopK(Int, Int, Int, UnsafePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>?, Int, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSDirectApplyTopK(_:_:_:_:_:_:_:_:_:_:))

Applies a top-k filter directly to an input.

[`func BNNSDirectApplyInTopK(Int, Int, Int, UnsafePointer<BNNSNDArrayDescriptor>, Int, UnsafePointer<BNNSNDArrayDescriptor>, Int, UnsafeMutablePointer<BNNSNDArrayDescriptor>, Int, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSDirectApplyInTopK(_:_:_:_:_:_:_:_:_:_:))

Applies an in-top-k filter directly to an input.

### Utility functions

[`static func copy(BNNSNDArrayDescriptor, to: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/copy(_:to:filterParameters:))

Copies the contents of an n-dimensional array descriptor to another descriptor of the same shape.

[`static func transpose(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, firstTransposeAxis: Int, secondTransposeAxis: Int, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/transpose(input:output:firstTransposeAxis:secondTransposeAxis:filterParameters:))

Transposes a tensor by swapping two of its dimensions.

[`func BNNSCopy(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSCopy(_:_:_:))

Copies the contents of an n-dimensional array descriptor to another of the same shape.

[`func BNNSTranspose(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, Int, Int, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSTranspose(_:_:_:_:_:))

Transposes a tensor by swapping two of its dimensions.

[`func BNNSGetPointer(BNNSFilter?, BNNSPointerSpecifier) -> BNNSNDArrayDescriptor`](/documentation/Accelerate/BNNSGetPointer(_:_:))

Returns an n-dimensional array descriptor that contains a reference to a filter-data member.

[`struct BNNSPointerSpecifier`](/documentation/Accelerate/BNNSPointerSpecifier)

Constants that specify which pointer the BNNS get filter function returns.

[`class GramLayer`](/documentation/Accelerate/BNNS/GramLayer)

A layer object that wraps a Gram matrix filter and manages its deinitialization.

[`struct BNNSLayerParametersGram`](/documentation/Accelerate/BNNSLayerParametersGram)

A set of parameters that define a Gram matrix layer.

[`func BNNSFilterCreateLayerGram(UnsafePointer<BNNSLayerParametersGram>, UnsafePointer<BNNSFilterParameters>?) -> BNNSFilter?`](/documentation/Accelerate/BNNSFilterCreateLayerGram(_:_:))

Returns a new Gram matrix layer.

[`static func clip(to: ClosedRange<Float>, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor) throws`](/documentation/Accelerate/BNNS/clip(to:input:output:))

Clips the input tensor to a closed range and writes the result to the output tensor.

[`static func clipByNorm(threshold: Float, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, axes: [Int]?) throws`](/documentation/Accelerate/BNNS/clipByNorm(threshold:input:output:axes:))

Clips the input tensor to a Euclidean norm and writes the result to the output tensor.

[`static func clipByGlobalNorm(threshold: Float, inputs: [BNNSNDArrayDescriptor], outputs: [BNNSNDArrayDescriptor], globalNorm: Float) throws`](/documentation/Accelerate/BNNS/clipByGlobalNorm(threshold:inputs:outputs:globalNorm:))

Clips the input tensors to a global Euclidean norm and writes the result to the output tensors.

[`func BNNSClipByValue(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, Float, Float) -> Int32`](/documentation/Accelerate/BNNSClipByValue(_:_:_:_:))

Clips a tensor’s values to the specified minimum and maximum values.

[`func BNNSClipByNorm(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, Float, UInt32) -> Int32`](/documentation/Accelerate/BNNSClipByNorm(_:_:_:_:))

Clips a tensor’s values to a maximum Euclidean norm.

[`func BNNSClipByGlobalNorm(UnsafeMutablePointer<UnsafeMutablePointer<BNNSNDArrayDescriptor>>, UnsafeMutablePointer<UnsafePointer<BNNSNDArrayDescriptor>>, Int, Float, Float) -> Int32`](/documentation/Accelerate/BNNSClipByGlobalNorm(_:_:_:_:_:))

Clips a tensor’s values to a maximum global Euclidean norm.

[`static func copyBandPart(BNNSNDArrayDescriptor, to: BNNSNDArrayDescriptor, lowerBandCount: Int?, upperBandCount: Int?, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/copyBandPart(_:to:lowerBandCount:upperBandCount:filterParameters:))

Copies the specified subdiagonals and superdiagonals of a matrix, and sets other elements to zero.

[`static func shuffle(BNNS.ShuffleType, input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/shuffle(_:input:output:filterParameters:))

Rearranges elements in a tensor according to shuffle type.

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

Constants that specify a shuffle type.

[`static func tile(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/tile(input:output:filterParameters:))

Generates an output tensor by tiling an input tensor multiple times.

[`static func tileBackward(outputGradient: BNNSNDArrayDescriptor, generatingInputGradient: BNNSNDArrayDescriptor, filterParameters: BNNSFilterParameters?) throws`](/documentation/Accelerate/BNNS/tileBackward(outputGradient:generatingInputGradient:filterParameters:))

Applies a tile filter backward to generate an input gradient.

### Errors

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

[`func BNNSBandPart(Int32, Int32, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSBandPart(_:_:_:_:_:))

Copies the specified subdiagonals and superdiagonals of a matrix, and sets other elements to zero.

[`func BNNSShuffle(BNNSShuffleType, UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSShuffle(_:_:_:_:))

Rearranges elements in a tensor according to shuffle type.

[`struct BNNSShuffleType`](/documentation/Accelerate/BNNSShuffleType)

Constants that specify a shuffle type.

[`func BNNSTile(UnsafePointer<BNNSNDArrayDescriptor>, UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSTile(_:_:_:))

Generates an output tensor by tiling an input tensor multiple times.

[`func BNNSTileBackward(UnsafeMutablePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSNDArrayDescriptor>, UnsafePointer<BNNSFilterParameters>?) -> Int32`](/documentation/Accelerate/BNNSTileBackward(_:_:_:))

Applies a tile filter backward to generate an input gradient.

### Macros

[`var BNNSDataTypeFloat16: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeFloat16)

[`var BNNSDataTypeFloat32: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeFloat32)

[`var BNNSDataTypeIndexed8: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeIndexed8)

[`var BNNSDataTypeInt16: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeInt16)

[`var BNNSDataTypeInt32: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeInt32)

[`var BNNSDataTypeInt8: BNNSDataType`](/documentation/Accelerate/BNNSDataTypeInt8)

[`var BNNSFlagsUseClientPtr: BNNSFlags`](/documentation/Accelerate/BNNSFlagsUseClientPtr)



---

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)