Clear accelerated deep learning function trace cache
Clear Cache of Accelerated Function
dlnetwork object and class names from the MAT file
s = load("dlnetDigits.mat"); net = s.net; classNames = s.classNames;
Accelerate the model loss function
modelLoss listed at the end of the example.
fun = @modelLoss; accfun = dlaccelerate(fun);
Clear any previously cached traces of the accelerated function using the
View the properties of the accelerated function. Because the cache is empty, the
Occupancy property is 0.
accfun = AcceleratedFunction with properties: Function: @modelLoss Enabled: 1 CacheSize: 50 HitRate: 0 Occupancy: 0 CheckMode: 'none' CheckTolerance: 1.0000e-04
AcceleratedFunction object stores the traces of underlying function calls and reuses the cached result when the same input pattern reoccurs. To use the accelerated function in a custom training loop, replace calls to the model gradients function with calls to the accelerated function. You can invoke the accelerated function as you would invoke the underlying function. Note that the accelerated function is not a function handle.
Evaluate the accelerated model gradients function with random data using the
X = rand(28,28,1,128,"single"); X = dlarray(X,"SSCB"); T = categorical(classNames(randi(10,[128 1]))); T = onehotencode(T,2)'; T = dlarray(T,"CB"); [loss,gradients,state] = dlfeval(accfun,net,X,T);
Occupancy property of the accelerated function. Because the function has been evaluated, the cache is nonempty.
ans = 2
Clear the cache using the
Occupancy property of the accelerated function. Because the cache has been cleared, the cache is empty.
ans = 0
Model Loss Function
modelLoss function takes a
net, a mini-batch of input data
X with corresponding target labels
T and returns the loss, the gradients of the loss with respect to the learnable parameters in
net, and the network state. To compute the gradients, use the
function [loss,gradients,state] = modelLoss(net,X,T) [Y,state] = forward(net,X); loss = crossentropy(Y,T); gradients = dlgradient(loss,net.Learnables); end