One Logo Pool Ball
Accelerate · IOS API REFERENCE

BNNS.FusedParametersLayer

class · iOS 15.0+ · SDK 27.1

class FusedParametersLayer

A fused layer. Use a `FusedParametersLayer` instance to fuse component layers with the following configurations: * Configuration 1: Convolution -> Normalization * Configuration 2: FullyConnected -> Normalization * Configuration 3: Transposed Convolution -> Normalization * Configuration 4: Convolution -> Quantization * Configuration 5: FullyConnected -> Quantization * Configuration 6: Transposed Convolution -> Quantization * Configuration 7: Arithmetic -> Normalization The following code shows a comparison of using discrete fully connected and normalization layers, and a fused fully connected- normalization layer. Given the following input and weights: let inputData: [Float] = [1, 2, 3, 4 ] let weightsData: [Float] = [10, 20, 30, 40, 100, 200, 300, 400, 1000, 2000, 3000, 4000] The code below creates a fully connected layer and a normalization layer and applies them in sequence: let discreteOutput = BNNSNDArrayDescriptor.allocateUninitialized(scalarType: Float.self, shape: .vector(3)) let fullyConnectedLayer = BNNS.FullyConnectedLayer(input: input, output: discreteOutput, weights: weights, bias: nil, activation: .identity) let normalizationLayer = BNNS.NormalizationLayer(type: .group(groupCount: 1), input: discreteOutput, output: discreteOutput, beta: BNNSNDArrayDescriptor(), gamma: BNNSNDArrayDescriptor(), epsilon: 1e-8, activation: .identity) try fullyConnectedLayer?.apply(batchSize: 1, input: input, output: discreteOutput) try normalizationLayer?.apply(batchSize: 1, input: discreteOutput, output: discreteOutput, for: .inference) The `FusedParametersLayer` accepts structures that define the parameters of its component layers. You apply the fused layer with a single function call. let fusedOutput = BNNSNDArrayDescriptor.allocateUninitialized(scalarType: Float.self, shape: .vector(3)) let fullyConnectedParams = BNNS.FusedFullyConnectedParameters(weights: weights, bias: nil) let normalizationParams = BNNS.FusedNormalizationParameters(type: .group(groupCount: 1), epsilon: 1e-8, activation: .identity) let fusedLayer = BNNS.FusedParametersLayer(input: input, output: fusedOutput, fusedLayerParameters: [fullyConnectedParams, normalizationParams]) try fusedLayer?.apply(batchSize: 1, input: input, output: fusedOutput, for: .inference) On return, `discreteOutput` and `fusedOutput` contain the same values: `[-0.8053872, -0.6040404, 1.4094276]`.

Members (7)

method · iOS 15.0+

applyBackward

TypeScript
applyBackwardBatchSizeInputAInputBInputCOutputOutputGradientGeneratingInputAGradientGeneratingInputBGradientGeneratingInputCGradientGeneratingParameterGradients(batchSize: number, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, outputGradient: BNNSNDArrayDescriptor, inputAGradient: BNNSNDArrayDescriptor, inputBGradient: BNNSNDArrayDescriptor, inputCGradient: BNNSNDArrayDescriptor, parameterGradients: Array<BNNSNDArrayDescriptor>): void
Swift declaration
func applyBackward(batchSize: Int, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, outputGradient: BNNSNDArrayDescriptor, generatingInputAGradient inputAGradient: BNNSNDArrayDescriptor, generatingInputBGradient inputBGradient: BNNSNDArrayDescriptor, generatingInputCGradient inputCGradient: BNNSNDArrayDescriptor, generatingParameterGradients parameterGradients: [BNNSNDArrayDescriptor]) throws

Applies the layer backward to generate input and parameter gradients. Use this function to backward apply fused ternary-arithmetic/normalization layers. - Parameter batchSize: The number of input-output pairs to process. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter output: The output descriptor. - Parameter outputGradient: The output gradient descriptor. - Parameter inputAGradient: The first input gradient descriptor. - Parameter inputBGradient: The second input gradient descriptor. - Parameter parameterGradients: An array of parameter gradient descriptors.

method · iOS 15.0+

applyBackward

TypeScript
applyBackwardBatchSizeInputAInputBOutputOutputGradientGeneratingInputAGradientGeneratingInputBGradientGeneratingParameterGradients(batchSize: number, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, outputGradient: BNNSNDArrayDescriptor, inputAGradient: BNNSNDArrayDescriptor, inputBGradient: BNNSNDArrayDescriptor, parameterGradients: Array<BNNSNDArrayDescriptor>): void
Swift declaration
func applyBackward(batchSize: Int, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, outputGradient: BNNSNDArrayDescriptor, generatingInputAGradient inputAGradient: BNNSNDArrayDescriptor, generatingInputBGradient inputBGradient: BNNSNDArrayDescriptor, generatingParameterGradients parameterGradients: [BNNSNDArrayDescriptor]) throws

Applies the layer backward to generate input and parameter gradients. Use this function to backward apply fused binary-arithmetic/normalization layers. - Parameter batchSize: The number of input-output pairs to process. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter output: The output descriptor. - Parameter outputGradient: The output gradient descriptor. - Parameter inputAGradient: The first input gradient descriptor. - Parameter inputBGradient: The second input gradient descriptor. - Parameter parameterGradients: An array of parameter gradient descriptors.

method · iOS 15.0+

apply

TypeScript
applyBatchSizeInputAInputBInputCOutputFor(batchSize: number, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, learningPhase: BNNS_LearningPhase): void
Swift declaration
func apply(batchSize: Int, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, for learningPhase: BNNS.LearningPhase) throws

Applies the layer to several pairs of (input, output) data. Use this function to apply fused ternary-arithmetic/normalization layers. - Parameter batchSize: The number of input-output pairs to process. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter inputC: The second input descriptor. - Parameter output: The output descriptor. - Parameter learningPhase: Specifies whether this function is being called during training.

method · iOS 15.0+

apply

TypeScript
applyBatchSizeInputAInputBOutputFor(batchSize: number, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, learningPhase: BNNS_LearningPhase): void
Swift declaration
func apply(batchSize: Int, inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, for learningPhase: BNNS.LearningPhase) throws

Applies the layer to several pairs of (input, output) data. Use this function to apply fused binary-arithmetic/normalization layers. - Parameter batchSize: The number of input-output pairs to process. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter output: The output descriptor. - Parameter learningPhase: Specifies whether this function is being called during training.

init · iOS 15.0+

init

TypeScript
static initInputOutputFusedLayerParametersFilterParameters(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: Array<Implements<FusableLayerParameters> | SDKHandle>, filterParameters?: (BNNSFilterParameters) | null): (BNNS_FusedParametersLayer) | null
Swift declaration
convenience init?(input: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: [any FusableLayerParameters], filterParameters: BNNSFilterParameters? = nil)

Creates a new fused layer from an array of layer parameters. - Parameter input: The input descriptor. - Parameter output: The output descriptor. - Parameter fusedLayerParameters: An array that contains the parameters of the fused layers. - Parameter filterParameters: Runtime filter parameters. `FusedParametersLayer` supports the following configurations: * Configuration 1: Convolution -> Normalization * Configuration 2: FullyConnected -> Normalization * Configuration 3: Transposed Convolution -> Normalization * Configuration 4: Convolution -> Quantization * Configuration 5: FullyConnected -> Quantization * Configuration 6: Transposed Convolution -> Quantization * Configuration 7: Arithmetic -> Normalization

init · iOS 15.0+

init

TypeScript
static initInputAInputBInputCOutputFusedLayerParametersFilterParameters(inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: Array<Implements<FusableLayerParameters> | SDKHandle>, filterParameters?: (BNNSFilterParameters) | null): (BNNS_FusedParametersLayer) | null
Swift declaration
convenience init?(inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, inputC: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: [any FusableLayerParameters], filterParameters: BNNSFilterParameters? = nil)

Creates a new fused layer from an array of layer parameters. Use this initializer to create Arithmetic -> Normalization layers where the arithmetic layer supports three inputs. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter inputC: The third input descriptor. - Parameter output: The output descriptor. - Parameter fusedLayerParameters: An array that contains the parameters of the fused layers. - Parameter filterParameters: Runtime filter parameters. `FusedParametersLayer` supports the following configurations. Use this initializer for configuration **7** with binary arithmetic operations. * Configuration 1: Convolution -> Normalization * Configuration 2: FullyConnected -> Normalization * Configuration 3: Transposed Convolution -> Normalization * Configuration 4: Convolution -> Quantization * Configuration 5: FullyConnected -> Quantization * Configuration 6: Transposed Convolution -> Quantization * **Configuration 7: Arithmetic -> Normalization**

init · iOS 15.0+

init

TypeScript
static initInputAInputBOutputFusedLayerParametersFilterParameters(inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: Array<Implements<FusableLayerParameters> | SDKHandle>, filterParameters?: (BNNSFilterParameters) | null): (BNNS_FusedParametersLayer) | null
Swift declaration
convenience init?(inputA: BNNSNDArrayDescriptor, inputB: BNNSNDArrayDescriptor, output: BNNSNDArrayDescriptor, fusedLayerParameters: [any FusableLayerParameters], filterParameters: BNNSFilterParameters? = nil)

Creates a new fused layer from an array of layer parameters. Use this initializer to create Arithmetic -> Normalization layers where the arithmetic layer supports two inputs. - Parameter inputA: The first input descriptor. - Parameter inputB: The second input descriptor. - Parameter output: The output descriptor. - Parameter fusedLayerParameters: An array that contains the parameters of the fused layers. - Parameter filterParameters: Runtime filter parameters. `FusedParametersLayer` supports the following configurations. Use this initializer for configuration **7** with binary arithmetic operations. * Configuration 1: Convolution -> Normalization * Configuration 2: FullyConnected -> Normalization * Configuration 3: Transposed Convolution -> Normalization * Configuration 4: Convolution -> Quantization * Configuration 5: FullyConnected -> Quantization * Configuration 6: Transposed Convolution -> Quantization * **Configuration 7: Arithmetic -> Normalization**

Skipped declarations

No declarations were skipped in this snapshot.

All Accelerate types →