---
title: "init(device:convolutionDescriptor:kernelWeights:biasTerms:flags:)"
framework: metalperformanceshaders
role: symbol
role_heading: Initializer
path: "metalperformanceshaders/mpscnnconvolution/init(device:convolutiondescriptor:kernelweights:biasterms:flags:)"
---

# init(device:convolutionDescriptor:kernelWeights:biasTerms:flags:)

Initializes a convolution kernel.

## Declaration

```swift
init(device: any MTLDevice, convolutionDescriptor: MPSCNNConvolutionDescriptor, kernelWeights: UnsafePointer<Float>, biasTerms: UnsafePointer<Float>?, flags: MPSCNNConvolutionFlags)
```

## Parameters

- `device`: The device on which this kernel will run.
- `convolutionDescriptor`: A pointer to a valid convolution descriptor.
- `kernelWeights`: A pointer to a weights array. Each entry is a float value. The number of entries is equal to doc://com.apple.metalperformanceshaders/documentation/MetalPerformanceShaders/MPSCNNConvolutionDescriptor/inputFeatureChannels * doc://com.apple.metalperformanceshaders/documentation/MetalPerformanceShaders/MPSCNNConvolutionDescriptor/outputFeatureChannels * doc://com.apple.metalperformanceshaders/documentation/MetalPerformanceShaders/MPSCNNConvolutionDescriptor/kernelHeight * doc://com.apple.metalperformanceshaders/documentation/MetalPerformanceShaders/MPSCNNConvolutionDescriptor/kernelWidth. The layout of the filter weight is arranged so that it can be reinterpreted as a 4D tensor (array) weight[outputChannels][kernelHeight][kernelWidth][inputChannels/groups] Weights are converted to half float precision (fp16) internally for best performance.
- `biasTerms`: A pointer to bias terms to be applied to the convolution output. Each entry is a float value. The number of entries is the number of output feature maps.
- `flags`: Currently unused. This value must be doc://com.apple.metalperformanceshaders/documentation/MetalPerformanceShaders/MPSCNNConvolutionFlags/none.

## Return Value

Return Value A valid MPSCNNConvolution object or nil, if failure.

## See Also

### Initializers

- [init(coder:device:)](metalperformanceshaders/mpscnnconvolution/init(coder:device:).md)
- [MPSCNNConvolutionDescriptor](metalperformanceshaders/mpscnnconvolutiondescriptor.md)
- [MPSCNNConvolutionFlags](metalperformanceshaders/mpscnnconvolutionflags.md)
- [init(device:weights:)](metalperformanceshaders/mpscnnconvolution/init(device:weights:).md)
- [MPSCNNConvolutionDataSource](metalperformanceshaders/mpscnnconvolutiondatasource.md)
