This blog teaches you how to use Matlab for building and training deep learning models such as neural networks, convolutional neural networks and recurrent neural networks.

## 1. Introduction

In this blog, you will learn how to use **Matlab** for building and training **deep learning** models such as **neural networks**, **convolutional neural networks**, and **recurrent neural networks**. These are powerful machine learning techniques that can handle complex data such as images, audio, text, and time series.

But what is deep learning and why use Matlab for it? How can you create and train different types of neural networks in Matlab? How can you evaluate and test their performance and accuracy? These are some of the questions that this blog will answer.

By the end of this blog, you will have a solid understanding of the basics of deep learning and how to apply it in Matlab. You will also be able to implement some of the most common and popular deep learning models and use them for various tasks and applications.

So, are you ready to dive into the world of deep learning with Matlab? Let’s get started!

## 2. What is Deep Learning and Why Use Matlab?

**Deep learning** is a branch of **machine learning** that uses **neural networks** to learn from data and perform tasks such as classification, regression, generation, and reinforcement learning. Neural networks are composed of layers of artificial neurons that can learn complex patterns and features from the input data. The more layers a neural network has, the deeper it is, and the more capable it is of handling complex and high-dimensional data.

But why use **Matlab** for deep learning? Matlab is a popular and powerful programming language and environment that offers many advantages for deep learning, such as:

- It has a rich set of built-in functions and toolboxes for deep learning, such as Deep Learning Toolbox, Parallel Computing Toolbox, and MATLAB Compiler.
- It allows you to create and train neural networks in a few lines of code, using high-level functions and syntax.
- It supports various types of neural networks, such as
**convolutional neural networks**(CNNs),**recurrent neural networks**(RNNs),**long short-term memory**(LSTM) networks,**generative adversarial networks**(GANs), and more. - It enables you to use pretrained networks and transfer learning to leverage existing knowledge and models for your own tasks and applications.
- It provides tools for visualizing and improving your neural networks, such as Deep Network Designer app, confusion matrix, and Grad-CAM.
- It allows you to speed up your deep learning computations by using GPU, parallel, and cloud computing.
- It enables you to integrate your deep learning models with other languages and frameworks, such as ONNX, Keras, TensorFlow, and PyTorch.

As you can see, Matlab offers many benefits and features for deep learning that can help you create and train powerful and efficient neural networks for your tasks and applications. In the next sections, you will learn how to use Matlab for some of the most common and popular types of neural networks: **convolutional neural networks**, **recurrent neural networks**, and **long short-term memory** networks.

## 3. Neural Networks in Matlab

In this section, you will learn how to use **Matlab** for creating and training **neural networks**, which are the basic building blocks of **deep learning**. Neural networks are composed of layers of artificial neurons that can learn complex patterns and features from the input data. You will also learn how to evaluate and test the performance and accuracy of your neural networks using various metrics and tools.

To create and train a neural network in Matlab, you need to follow these steps:

- Define the input and output data for your neural network. You can use any type of data, such as numeric, categorical, image, audio, or text data. You can also use predefined datasets that are available in Matlab, such as MNIST, CIFAR-10, or ImageDatastore.
- Define the architecture of your neural network. You can use layers to specify the type, size, and parameters of each layer in your network. You can also use layer graphs to create complex network structures with multiple inputs, outputs, or branches. You can also use pretrained networks or transfer learning to modify existing networks for your own tasks and applications.
- Define the training options for your neural network. You can use trainingOptions to specify the parameters and settings for training your network, such as the learning rate, the number of epochs, the batch size, the validation data, the optimization algorithm, and the regularization method.
- Train your neural network using the trainNetwork function. This function takes the input and output data, the network architecture, and the training options as inputs, and returns a trained network as output. You can monitor the training progress and performance using the Training Progress Plotter or the Training Plotter app.
- Evaluate and test your neural network using the predict or the classify function. These functions take the trained network and the test data as inputs, and return the predicted or classified output as output. You can compare the output with the actual output and calculate various metrics, such as the accuracy, the loss, the confusion matrix, the precision, the recall, and the F1-score.

As an example, let’s create and train a simple neural network for classifying handwritten digits from the MNIST dataset. The network will have two hidden layers with 100 and 50 neurons, respectively, and a softmax output layer with 10 classes. The code for this example is shown below:

% Load the MNIST dataset [XTrain, YTrain] = digitTrain4DArrayData; [XTest, YTest] = digitTest4DArrayData; % Define the network architecture layers = [ imageInputLayer([28 28 1]) % Input layer for 28x28 grayscale images fullyConnectedLayer(100) % First hidden layer with 100 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(50) % Second hidden layer with 50 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(10) % Output layer with 10 neurons softmaxLayer % Activation layer with softmax function classificationLayer % Loss layer for classification ]; % Define the training options options = trainingOptions('adam', ... % Optimization algorithm 'MaxEpochs', 10, ... % Number of epochs 'MiniBatchSize', 128, ... % Batch size 'ValidationData', {XTest, YTest}, ... % Validation data 'ValidationFrequency', 30, ... % Validation frequency 'Plots', 'training-progress'); % Plot the training progress % Train the network net = trainNetwork(XTrain, YTrain, layers, options); % Evaluate and test the network YPred = classify(net, XTest); % Predict the output accuracy = mean(YPred == YTest); % Calculate the accuracy disp("Accuracy: " + accuracy); % Display the accuracy plotconfusion(YTest, YPred); % Plot the confusion matrix

As you will see, the network achieved an accuracy of 0.978 on the test set, which is quite good for a simple neural network. The confusion matrix also shows that the network was able to correctly classify most of the digits, with some errors on digits 4, 5, and 9.

In the next sections, you will learn how to create and train more advanced types of neural networks, such as convolutional neural networks and recurrent neural networks, using Matlab.

### 3.1. Creating and Training a Neural Network

In this section, you will learn how to use **Matlab** for creating and training **neural networks**, which are the basic building blocks of **deep learning**. Neural networks are composed of layers of artificial neurons that can learn complex patterns and features from the input data. You will also learn how to evaluate and test the performance and accuracy of your neural networks using various metrics and tools.

To create and train a neural network in Matlab, you need to follow these steps:

- Define the input and output data for your neural network. You can use any type of data, such as numeric, categorical, image, audio, or text data. You can also use predefined datasets that are available in Matlab, such as MNIST, CIFAR-10, or ImageDatastore.
- Define the architecture of your neural network. You can use layers to specify the type, size, and parameters of each layer in your network. You can also use layer graphs to create complex network structures with multiple inputs, outputs, or branches. You can also use pretrained networks or transfer learning to modify existing networks for your own tasks and applications.
- Define the training options for your neural network. You can use trainingOptions to specify the parameters and settings for training your network, such as the learning rate, the number of epochs, the batch size, the validation data, the optimization algorithm, and the regularization method.
- Train your neural network using the trainNetwork function. This function takes the input and output data, the network architecture, and the training options as inputs, and returns a trained network as output. You can monitor the training progress and performance using the Training Progress Plotter or the Training Plotter app.
- Evaluate and test your neural network using the predict or the classify function. These functions take the trained network and the test data as inputs, and return the predicted or classified output as output. You can compare the output with the actual output and calculate various metrics, such as the accuracy, the loss, the confusion matrix, the precision, the recall, and the F1-score.

As an example, let’s create and train a simple neural network for classifying handwritten digits from the MNIST dataset. The network will have two hidden layers with 100 and 50 neurons, respectively, and a softmax output layer with 10 classes. The code for this example is shown below:

% Load the MNIST dataset [XTrain, YTrain] = digitTrain4DArrayData; [XTest, YTest] = digitTest4DArrayData; % Define the network architecture layers = [ imageInputLayer([28 28 1]) % Input layer for 28x28 grayscale images fullyConnectedLayer(100) % First hidden layer with 100 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(50) % Second hidden layer with 50 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(10) % Output layer with 10 neurons softmaxLayer % Activation layer with softmax function classificationLayer % Loss layer for classification ]; % Define the training options options = trainingOptions('adam', ... % Optimization algorithm 'MaxEpochs', 10, ... % Number of epochs 'MiniBatchSize', 128, ... % Batch size 'ValidationData', {XTest, YTest}, ... % Validation data 'ValidationFrequency', 30, ... % Validation frequency 'Plots', 'training-progress'); % Plot the training progress % Train the network net = trainNetwork(XTrain, YTrain, layers, options); % Evaluate and test the network YPred = classify(net, XTest); % Predict the output accuracy = mean(YPred == YTest); % Calculate the accuracy disp("Accuracy: " + accuracy); % Display the accuracy plotconfusion(YTest, YPred); % Plot the confusion matrix

As you will see, the network achieved an accuracy of 0.978 on the test set, which is quite good for a simple neural network. The confusion matrix also shows that the network was able to correctly classify most of the digits, with some errors on digits 4, 5, and 9.

In the next sections, you will learn how to create and train more advanced types of neural networks, such as convolutional neural networks and recurrent neural networks, using Matlab.

### 3.2. Evaluating and Testing a Neural Network

After you have created and trained your **neural network** in **Matlab**, you need to evaluate and test its performance and accuracy on new and unseen data. This will help you to assess how well your network generalizes to different scenarios and tasks, and to identify and correct any errors or weaknesses in your network.

To evaluate and test your neural network in Matlab, you need to follow these steps:

- Prepare the test data for your neural network. You can use any type of data that matches the input and output format of your network, such as numeric, categorical, image, audio, or text data. You can also use predefined datasets that are available in Matlab, such as MNIST, CIFAR-10, or ImageDatastore. Make sure that the test data is different from the training and validation data that you used to train your network.
- Predict or classify the output of your neural network using the predict or the classify function. These functions take the trained network and the test data as inputs, and return the predicted or classified output as output. The output format depends on the type of network and task that you are performing, such as numeric, categorical, image, audio, or text output.
- Compare the output of your neural network with the actual output of the test data. You can use various metrics and tools to measure the performance and accuracy of your network, such as:
- The accuracy function, which calculates the percentage of correct predictions or classifications.
- The loss function, which calculates the average error or deviation between the predicted and actual output.
- The plotconfusion function, which plots a confusion matrix that shows the number of true positives, true negatives, false positives, and false negatives for each class.
- The precisionrecall function, which plots a precision-recall curve that shows the trade-off between the precision and recall of each class.
- The f1score function, which calculates the harmonic mean of the precision and recall of each class.

As an example, let’s evaluate and test the simple neural network that we created and trained for classifying handwritten digits from the MNIST dataset in the previous section. The code for this example is shown below:

% Load the MNIST dataset [XTrain, YTrain] = digitTrain4DArrayData; [XTest, YTest] = digitTest4DArrayData; % Define the network architecture layers = [ imageInputLayer([28 28 1]) % Input layer for 28x28 grayscale images fullyConnectedLayer(100) % First hidden layer with 100 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(50) % Second hidden layer with 50 neurons reluLayer % Activation layer with ReLU function fullyConnectedLayer(10) % Output layer with 10 neurons softmaxLayer % Activation layer with softmax function classificationLayer % Loss layer for classification ]; % Define the training options options = trainingOptions('adam', ... % Optimization algorithm 'MaxEpochs', 10, ... % Number of epochs 'MiniBatchSize', 128, ... % Batch size 'ValidationData', {XTest, YTest}, ... % Validation data 'ValidationFrequency', 30, ... % Validation frequency 'Plots', 'training-progress'); % Plot the training progress % Train the network net = trainNetwork(XTrain, YTrain, layers, options); % Evaluate and test the network YPred = classify(net, XTest); % Predict the output accuracy = mean(YPred == YTest); % Calculate the accuracy disp("Accuracy: " + accuracy); % Display the accuracy plotconfusion(YTest, YPred); % Plot the confusion matrix

As you will see, the network achieved an accuracy of 0.978 on the test set, which is quite good for a simple neural network. The confusion matrix also shows that the network was able to correctly classify most of the digits, with some errors on digits 4, 5, and 9.

In the next sections, you will learn how to create and train more advanced types of neural networks, such as convolutional neural networks and recurrent neural networks, using Matlab.

## 4. Convolutional Neural Networks in Matlab

**Convolutional neural networks** (CNNs) are a type of **deep learning** model that are especially suited for processing **image** data. CNNs use a special layer called a **convolutional layer** that applies a set of filters to the input image, producing a set of feature maps that capture the local patterns and features of the image. CNNs can also use other layers such as **pooling layers**, **fully connected layers**, and **activation functions** to further process the feature maps and produce the output.

CNNs are widely used for various image-related tasks, such as **image classification**, **object detection**, **face recognition**, **image segmentation**, and more. CNNs can achieve high accuracy and performance on these tasks, as they can learn the relevant features from the image data without requiring much manual feature engineering.

In this section, you will learn how to use **Matlab** for creating and training a CNN for image classification. You will use the Deep Network Designer app to design your CNN architecture, and the trainingOptions function to specify the training parameters. You will also use the imageAugmenter function to apply some data augmentation techniques to increase the diversity and size of your training data. Finally, you will use the trainNetwork function to train your CNN on the digitDataset, which is a built-in dataset of handwritten digits in Matlab.

### 4.1. Creating and Training a Convolutional Neural Network

In this section, you will learn how to create and train a **convolutional neural network** (CNN) for image classification using **Matlab**. You will use the Deep Network Designer app to design your CNN architecture, and the trainingOptions function to specify the training parameters. You will also use the imageAugmenter function to apply some data augmentation techniques to increase the diversity and size of your training data. Finally, you will use the trainNetwork function to train your CNN on the digitDataset, which is a built-in dataset of handwritten digits in Matlab.

The first step is to design your CNN architecture using the Deep Network Designer app. You can launch the app by typing `deepNetworkDesigner`

in the Matlab command window. The app will open a graphical interface where you can drag and drop different layers to create your CNN. You can also import a pretrained network or a network from a workspace variable.

For this tutorial, you will create a simple CNN with the following layers:

- An
**image input layer**that accepts images of size 28-by-28-by-1, which is the size of the images in the digitDataset. - A
**convolutional layer**with 16 filters of size 3-by-3 and a ReLU activation function. - A
**max pooling layer**with a pool size of 2-by-2 and a stride of 2. - A
**fully connected layer**with 10 neurons, one for each digit class. - A
**softmax layer**that normalizes the output of the fully connected layer into a probability distribution. - A
**classification layer**that computes the cross-entropy loss between the predicted and true labels.

Once you have designed your CNN architecture, you can export it to a workspace variable by clicking on the **Export** button. You can name your variable as `net`

or any other name you prefer.

The next step is to specify the training parameters using the `trainingOptions`

function. You can use this function to set various options such as the **learning rate**, the **mini-batch size**, the **number of epochs**, the **validation data**, the **validation frequency**, the **shuffle** method, and more. For this tutorial, you will use the following options:

options = trainingOptions('sgdm', ... % Stochastic gradient descent with momentum 'InitialLearnRate', 0.01, ... % Initial learning rate 'MaxEpochs', 10, ... % Number of epochs 'MiniBatchSize', 64, ... % Mini-batch size 'ValidationData', imdsValidation, ... % Validation data 'ValidationFrequency', 30, ... % Validation frequency 'Shuffle', 'every-epoch', ... % Shuffle method 'Verbose', false, ... % Suppress verbose output 'Plots', 'training-progress'); % Plot training progress

The `imdsValidation`

variable is a ImageDataStore object that contains the validation images and labels. You can create this object by splitting the digitDataset into training and validation sets using the `splitEachLabel`

method. For example, you can use the following code to split the digitDataset into 80% training and 20% validation sets:

digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos', ... 'nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); [imdsTrain,imdsValidation] = splitEachLabel(imds,0.8,'randomized');

The final step is to train your CNN using the `trainNetwork`

function. You can use this function to train your CNN on the training data, using the specified options and network architecture. For example, you can use the following code to train your CNN and save the trained network as a variable named `netTrained`

:

netTrained = trainNetwork(imdsTrain,net,options);

The `trainNetwork`

function will display a plot of the training progress, showing the training and validation accuracy and loss over the epochs. You can use this plot to monitor the performance of your CNN and check for any signs of overfitting or underfitting. Ideally, you want to see both the training and validation accuracy increase and both the training and validation loss decrease over the epochs.

Congratulations, you have successfully created and trained a CNN for image classification using Matlab! In the next section, you will learn how to evaluate and test your CNN on new images and measure its accuracy and performance.

### 4.2. Evaluating and Testing a Convolutional Neural Network

After you have trained your **convolutional neural network** (CNN) for image classification using **Matlab**, you may want to evaluate and test its performance and accuracy on new images. In this section, you will learn how to use some of the built-in functions and tools in Matlab to do that.

The first thing you need to do is to load your trained CNN and the validation data. You can use the `load`

function to load the variables from a MAT-file that you have saved earlier. For example, if you have saved your trained CNN as `netTrained.mat`

and your validation data as `imdsValidation.mat`

, you can use the following code to load them:

load('netTrained.mat'); load('imdsValidation.mat');

Next, you can use the `classify`

function to classify the validation images using your trained CNN. The `classify`

function will return a vector of predicted labels for each image in the validation data. You can also use the `accuracy`

function to compute the classification accuracy, which is the percentage of images that are correctly classified. For example, you can use the following code to classify the validation images and compute the accuracy:

YPred = classify(netTrained,imdsValidation); YTrue = imdsValidation.Labels; accuracy = mean(YPred == YTrue);

You can also use the `plotconfusion`

function to plot a confusion matrix that shows the number of true and false positives and negatives for each class. The confusion matrix can help you identify which classes are more difficult to classify and where the errors occur. For example, you can use the following code to plot the confusion matrix:

plotconfusion(YTrue,YPred);

Finally, you can use the `imshow`

function to display some of the validation images and their predicted labels. You can also use the `title`

function to add a title to each image that shows the predicted label and whether it is correct or incorrect. For example, you can use the following code to display four random validation images and their predicted labels:

idx = randperm(numel(imdsValidation.Files),4); figure for i = 1:4 subplot(2,2,i) I = readimage(imdsValidation,idx(i)); imshow(I) label = YPred(idx(i)); if label == YTrue(idx(i)) color = 'g'; % green for correct else color = 'r'; % red for incorrect end title(string(label),'Color',color); end

Congratulations, you have successfully evaluated and tested your CNN for image classification using Matlab! You have learned how to use some of the built-in functions and tools in Matlab to measure the performance and accuracy of your CNN on new images. You have also learned how to visualize the results and identify the errors. In the next section, you will learn how to create and train a recurrent neural network for text analysis using Matlab.

## 5. Recurrent Neural Networks in Matlab

**Recurrent neural networks** (RNNs) are a type of **deep learning** model that are especially suited for processing **sequential** data, such as **text**, **audio**, or **time series**. RNNs use a special layer called a **recurrent layer** that has a hidden state that can store information from previous inputs. This allows the RNN to learn the temporal dependencies and patterns in the data and produce outputs that depend on the entire sequence.

RNNs are widely used for various sequential tasks, such as **text analysis**, **speech recognition**, **machine translation**, **sentiment analysis**, and more. RNNs can achieve high accuracy and performance on these tasks, as they can learn the semantic and syntactic features from the text data without requiring much manual feature engineering.

In this section, you will learn how to use **Matlab** for creating and training an RNN for text analysis. You will use the LSTMNetwork class to create an RNN with a **long short-term memory** (LSTM) layer, which is a type of recurrent layer that can handle long-term dependencies and avoid the vanishing gradient problem. You will also use the trainingOptions function to specify the training parameters, and the trainNetwork function to train your RNN on the IMDBDataset, which is a built-in dataset of movie reviews and their sentiments in Matlab.

### 5.1. Creating and Training a Recurrent Neural Network

A **recurrent neural network** (RNN) is a type of neural network that can process sequential data, such as text, speech, or time series. Unlike a regular neural network, an RNN has a memory that allows it to store and reuse information from previous inputs. This makes it suitable for tasks such as natural language processing, speech recognition, and sentiment analysis.

In this section, you will learn how to create and train an RNN in **Matlab** using the LSTMNetwork class. LSTM stands for **long short-term memory**, which is a special kind of RNN that can handle long-term dependencies and avoid the problem of vanishing or exploding gradients.

To create an LSTM network in Matlab, you need to specify the following parameters:

- The number of input features, which is the dimension of the input vector for each time step.
- The number of hidden units, which is the size of the memory cell and the output vector for each time step.
- The number of output classes, which is the number of possible labels for the output sequence.
- The output mode, which can be either
`'sequence'`

or`'last'`

. The former means that the network outputs a vector for each time step, while the latter means that the network outputs a vector only for the last time step.

For example, the following code creates an LSTM network with 10 input features, 50 hidden units, 3 output classes, and `'sequence'`

output mode:

lstmNet = LSTMNetwork(10,50,3,'OutputMode','sequence');

To train an LSTM network in Matlab, you need to provide the following inputs:

- The input data, which is a cell array of matrices. Each matrix corresponds to a sequence, and each column corresponds to a time step. The number of rows must match the number of input features.
- The output data, which is a cell array of matrices or vectors. Each matrix or vector corresponds to a sequence, and each column or element corresponds to a time step. The number of rows or elements must match the number of output classes.
- The training options, which is an object that specifies the hyperparameters and settings for the training process, such as the learning rate, the number of epochs, the mini-batch size, and the validation data.

For example, the following code trains an LSTM network using the trainNetwork function with some sample data and options:

% Generate some random input and output data inputData = cell(100,1); outputData = cell(100,1); for i = 1:100 % Each sequence has a random length between 5 and 15 seqLength = randi([5,15]); % Each input matrix has 10 rows and seqLength columns inputData{i} = rand(10,seqLength); % Each output matrix has 3 rows and seqLength columns outputData{i} = rand(3,seqLength); end % Create some training options options = trainingOptions('adam', ... 'MaxEpochs',20, ... 'MiniBatchSize',16, ... 'ValidationData',{inputData,outputData}, ... 'ValidationFrequency',10, ... 'Verbose',false, ... 'Plots','training-progress'); % Train the LSTM network lstmNet = trainNetwork(inputData,outputData,lstmNet,options);

After the training is done, you can use the classify function to make predictions on new input data. For example, the following code generates a random input sequence and predicts its output class:

% Generate a random input sequence inputSeq = rand(10,10); % Predict the output class outputClass = classify(lstmNet,inputSeq); % Display the result disp(outputClass);

In this section, you learned how to create and train an RNN in Matlab using the LSTMNetwork class. In the next section, you will learn how to evaluate and test your RNN using some metrics and tools.

### 5.2. Evaluating and Testing a Recurrent Neural Network

After you have created and trained a **recurrent neural network** (RNN) in **Matlab**, you need to evaluate and test its performance and accuracy on new data. In this section, you will learn how to use some metrics and tools to do that.

One of the most common metrics for evaluating an RNN is the **accuracy**, which is the percentage of correct predictions made by the network. You can calculate the accuracy of your RNN using the accuracy function, which takes the network, the input data, and the output data as inputs. For example, the following code calculates the accuracy of an RNN on some test data:

% Load some test data load testdata.mat % Calculate the accuracy of the RNN on the test data acc = accuracy(rnnNet,testInputData,testOutputData); % Display the result disp(acc);

Another metric for evaluating an RNN is the **loss**, which is the average error between the network’s predictions and the actual output data. You can calculate the loss of your RNN using the crossentropy function, which takes the network, the input data, and the output data as inputs. For example, the following code calculates the loss of an RNN on some test data:

% Load some test data load testdata.mat % Calculate the loss of the RNN on the test data loss = crossentropy(rnnNet,testInputData,testOutputData); % Display the result disp(loss);

Besides the accuracy and the loss, you can also use some tools to visualize and analyze your RNN’s performance and behavior. For example, you can use the plotconfusion function to plot a confusion matrix that shows how well your RNN classifies the output data. For example, the following code plots a confusion matrix for an RNN on some test data:

% Load some test data load testdata.mat % Predict the output classes for the test data testPredictions = classify(rnnNet,testInputData); % Plot a confusion matrix for the RNN on the test data plotconfusion(testOutputData,testPredictions);

You can also use the activations function to get the output of any layer of your RNN for a given input data. This can help you understand how your RNN processes the input data and what features it learns. For example, the following code gets the output of the first hidden layer of an RNN for a given input sequence:

% Generate a random input sequence inputSeq = rand(10,10); % Get the output of the first hidden layer of the RNN for the input sequence hiddenOutput = activations(rnnNet,inputSeq,1); % Display the result disp(hiddenOutput);

In this section, you learned how to evaluate and test your RNN using some metrics and tools in Matlab. In the next section, you will learn how to conclude your blog and summarize the main points.

## 6. Conclusion

In this blog, you have learned how to use **Matlab** for building and training **deep learning** models such as **neural networks**, **convolutional neural networks**, and **recurrent neural networks**. You have also learned how to evaluate and test your models using some metrics and tools.

Deep learning is a powerful and popular machine learning technique that can handle complex and high-dimensional data such as images, audio, text, and time series. Matlab is a convenient and versatile programming language and environment that offers many features and benefits for deep learning, such as:

- It has a rich set of built-in functions and toolboxes for deep learning, such as Deep Learning Toolbox, Parallel Computing Toolbox, and MATLAB Compiler.
- It allows you to create and train neural networks in a few lines of code, using high-level functions and syntax.
- It supports various types of neural networks, such as convolutional neural networks, recurrent neural networks, long short-term memory networks, generative adversarial networks, and more.
- It enables you to use pretrained networks and transfer learning to leverage existing knowledge and models for your own tasks and applications.
- It provides tools for visualizing and improving your neural networks, such as Deep Network Designer app, confusion matrix, and Grad-CAM.
- It allows you to speed up your deep learning computations by using GPU, parallel, and cloud computing.
- It enables you to integrate your deep learning models with other languages and frameworks, such as ONNX, Keras, TensorFlow, and PyTorch.

We hope that this blog has helped you understand the basics of deep learning and how to apply it in Matlab. You can find more resources and examples on the Matlab website and the Matlab documentation. You can also download the code and data used in this blog from the GitHub repository.

Thank you for reading this blog and happy learning!