# Operations

For most tasks, you can use built-in layers. If there is not a built-in layer that you need for your task, then you can define your own custom layer. You can define custom layers with learnable and state parameters. After you define a custom layer, you can check that the layer is valid, GPU compatible, and outputs correctly defined gradients. To learn more, see Define Custom Deep Learning Layers. For a list of supported layers, see List of Deep Learning Layers.

If the `trainingOptions`

function does not
provide the training options that you need for your task, or you have a loss
function that the `trainnet`

function does not support, then you can define a custom
training loop. For models that cannot be specified as networks of layers, you
can define the model as a function. To learn more, see Define Custom Training Loops, Loss Functions, and Networks.

Use deep learning operations to develop MATLAB^{®} code for custom layers, training loops, and model
functions.

## Functions

## Topics

### Automatic Differentiation

**List of Functions with dlarray Support**

View the list of functions that support`dlarray`

objects.**Automatic Differentiation Background**

Learn how automatic differentiation works.**Use Automatic Differentiation In Deep Learning Toolbox**

How to use automatic differentiation in deep learning.**Define Custom Deep Learning Operations**

Learn how to define custom deep learning operation.**Specify Custom Operation Backward Function**

This example shows how to define the SReLU operation as a differentiable function and specify a custom backward function.**Train Model Using Custom Backward Function**

This example shows how to train a deep learning model that contains an operation with a custom backward function.

### Model Functions

**Train Network Using Model Function**

This example shows how to create and train a deep learning network by using functions rather than a layer graph or a`dlnetwork`

.**Update Batch Normalization Statistics Using Model Function**

This example shows how to update the network state in a network defined as a function.**Make Predictions Using Model Function**

This example shows how to make predictions using a model function by splitting data into mini-batches.**Initialize Learnable Parameters for Model Function**

Learn how to initialize learnable parameters for custom training loops using a model function.

### Deep Learning Function Acceleration

**Deep Learning Function Acceleration for Custom Training Loops**

Accelerate model functions and model loss functions for custom training loops by caching and reusing traces.**Accelerate Custom Training Loop Functions**

This example shows how to accelerate deep learning custom training loop and prediction functions.**Check Accelerated Deep Learning Function Outputs**

This example shows how to check that the outputs of accelerated functions match the outputs of the underlying function.**Evaluate Performance of Accelerated Deep Learning Function**

This example shows how to evaluate the performance gains of using an accelerated function.