---
title: "init(i_desc:o_desc:w_desc:reduce_func:epsilon:)"
framework: accelerate
role: symbol
role_heading: Initializer
path: "accelerate/bnnslayerparametersreduction/init(i_desc:o_desc:w_desc:reduce_func:epsilon:)"
---

# init(i_desc:o_desc:w_desc:reduce_func:epsilon:)

Returns a structure containing the parameters of a reduction layer from the specified parameters.

## Declaration

```swift
init(i_desc: BNNSNDArrayDescriptor, o_desc: BNNSNDArrayDescriptor, w_desc: BNNSNDArrayDescriptor, reduce_func: BNNSReduceFunction, epsilon: Float)
```

## Parameters

- `i_desc`: The descriptor of the input.
- `o_desc`: The descriptor of the output.
- `w_desc`: The descriptor of the weights.
- `reduce_func`: The variable that specifies the reduction function.
- `epsilon`: A value that the operation adds to each element when computing the sum of logarithms.

## Discussion

Discussion important: The number of input dimensions must be equal to number of output dimensions, and equal to the number of weights dimensions. The reduction layer only supports float, with the exception of BNNSReduceFunctionLogicalOr and BNNSReduceFunctionLogicalAnd that support float and BNNSDataTypeBoolean.

## See Also

### Initializers

- [init()](accelerate/bnnslayerparametersreduction/init().md)
