Main Content

dldivergence

Divergence of deep learning data

Since R2024b

    Description

    The divergence deep learning operation returns the mathematical divergence of neural network and model function outputs with respect to the specified input data and operation dimension.

    div = dldivergence(u,x,dim) returns the sum of the partial derivatives of neural network outputs u with respect to the data x for the specified operation dimension.

    example

    div = dldivergence(u,x,dim,EnableHigherDerivatives=tf) also specifies whether to enable higher derivatives by tracing the backward pass.

    Examples

    collapse all

    Create a neural network.

    numChannels = 3;
    
    layers = [
        featureInputLayer(numChannels)
        fullyConnectedLayer(numChannels)
        tanhLayer];
    
    net = dlnetwork(layers);

    Load the training data. For the purposes of this example, generate some random data.

    numObservations = 128;
    
    X = rand(numChannels,numObservations);
    X = dlarray(X,"CB");
    
    T = rand(numChannels,numObservations);
    T = dlarray(T,"CB");

    Define a model loss function that takes the network and data as input and returns the loss, gradients of the loss with respect to the learnable parameters, and the divergence of the predictions with respect to the input data.

    function [loss,gradients,div] = modelLoss(net,X,T)
    
    Y = forward(net,X);
    loss = l1loss(Y,T);
    
    X = stripdims(X);
    Y = stripdims(Y);
    
    div = dldivergence(Y,X,1);
    gradients = dlgradient(loss,net.Learnables);
    
    end

    Evaluate the model loss function using the dlfeval function.

    [loss,gradients,div] = dlfeval(@modelLoss,net,X,T);

    View the size of the divergence.

    size(div)
    ans = 1×2
    
         1   128
    
    

    Input Arguments

    collapse all

    Input, specified as a traced dlarray matrix.

    When the software evaluates a function with automatic differentiation enabled, the software traces the input dlarray objects. These are some contexts where the software traces dlarray objects:

    • Inside loss functions that the trainnet function evaluates

    • Inside forward functions that custom layers evaluate

    • Inside model and model loss functions that the dlfeval function evaluates

    The sizes of u and x must match.

    Input, specified as a traced dlarray matrix.

    When the software evaluates a function with automatic differentiation enabled, the software traces the input dlarray objects. These are some contexts where the software traces dlarray objects:

    • Inside loss functions that the trainnet function evaluates

    • Inside forward functions that custom layers evaluate

    • Inside model and model loss functions that the dlfeval function evaluates

    The sizes of u and x must match.

    Operation dimension of u, specified as a positive integer.

    The dldivergence function treats the remaining dimensions of the data as independent batch dimensions.

    Data Types: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

    Flag to enable higher-order derivatives, specified as one of the following:

    • true — Enable higher-order derivatives. Trace the backward pass so that the returned gradients can be used in further computations for subsequent calls to functions that compute derivatives using automatic differentiation (for example, dlgradient, dljacobian, dldivergence, and dllaplacian).

    • false — Disable higher-order derivatives. Do not trace the backward pass. Use this option when you need to compute first-order derivatives only as this is usually quicker and requires less memory.

    Output Arguments

    collapse all

    Divergence, returned as an unformatted 1-by-N dlarray object, where N is the size of the batch dimension of the data. The value of div(n) is div u(:,n)=·u(:,n)=i=1Ku(i,n)x(i,n), where K is the size of the operation dimension of the data, i indexes into the operation dimension, and n indexes into the batch dimension.

    Version History

    Introduced in R2024b