DL Tutorial 2 — Artificial Neural Networks: Basics and Principles
Learn the basics of artificial neural networks and their principles.

Table of Contents 1. Introduction 2. What are Artificial Neural Networks? 3. How do Artificial Neural Networks Work? 4. Types of Artificial Neural Networks 5. Applications of Artificial Neural Networks 6. Challenges and Limitations of Artificial Neural Networks 7. Conclusion
Subscribe for FREE to get your 42 pages e-book: Data Science | The Comprehensive Handbook
Get step-by-step e-books on Python, ML, DL, and LLMs.
1. Introduction
Welcome to this tutorial on artificial neural networks, or ANN for short. In this tutorial, you will learn the basics and principles of artificial neural networks, a powerful machine learning technique that can solve complex problems such as image recognition, natural language processing, and self-driving cars.
Artificial neural networks are inspired by the structure and function of the human brain, which consists of billions of interconnected neurons that process and transmit information. Similarly, artificial neural networks are composed of layers of artificial neurons that can learn from data and perform various tasks.
By the end of this tutorial, you will be able to:
- Explain what artificial neural networks are and how they work
- Differentiate between different types of artificial neural networks and their applications
- Understand the challenges and limitations of artificial neural networks
Before we begin, you will need some basic knowledge of Python programming and data analysis. If you are not familiar with these topics, you can check out these resources:
- [Python Tutorial]: A comprehensive tutorial on the Python language, covering syntax, data types, control structures, functions, modules, and more.
- [Data Analysis with Python]: A practical guide on how to use Python for data analysis, covering data manipulation, visualization, statistics, machine learning, and more.
Ready to dive into the world of artificial neural networks? Let’s get started!
2. What are Artificial Neural Networks?
In this section, you will learn what artificial neural networks are and how they are inspired by the human brain. You will also learn some basic terminology and concepts related to artificial neural networks.
What are artificial neural networks?
Artificial neural networks, or ANN for short, are a type of machine learning technique that can learn from data and perform various tasks, such as classification, regression, clustering, anomaly detection, and more. Machine learning is a branch of artificial intelligence that aims to create systems that can learn from data and improve their performance without explicit programming.
Artificial neural networks are inspired by the structure and function of the human brain, which consists of billions of interconnected neurons that process and transmit information. Similarly, artificial neural networks are composed of layers of artificial neurons that can learn from data and perform various tasks.
What are artificial neurons?
Artificial neurons, or simply neurons, are the basic units of artificial neural networks. They are mathematical functions that can receive inputs, perform some computation, and produce an output. Each neuron has a set of weights and a bias that determine how the inputs are combined and transformed. The weights and bias are the parameters that the neuron can learn from data and adjust accordingly.
Each neuron also has an activation function that determines the output of the neuron based on the input. The activation function can be linear or nonlinear, depending on the type of problem and the desired output. Some common activation functions are sigmoid, tanh, ReLU, softmax, and more.
Here is a simple example of an artificial neuron that takes two inputs, x1 and x2, and produces an output, y. The neuron has weights w1 and w2, a bias b, and a sigmoid activation function.
# Define the sigmoid function
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# Define the neuron function
def neuron(x1, x2, w1, w2, b):
# Compute the weighted sum of inputs and bias
z = w1 * x1 + w2 * x2 + b
# Apply the activation function
y = sigmoid(z)
# Return the output
return yWhat are the layers of artificial neural networks?
The layers of artificial neural networks are the groups of neurons that are connected and perform a specific function. There are three types of layers in artificial neural networks: input layer, hidden layer, and output layer.
The input layer is the first layer of the network that receives the data and passes it to the next layer. The input layer does not perform any computation, but simply acts as a placeholder for the data.
The hidden layer is the layer that is between the input and output layers. The hidden layer performs the main computation and learning of the network. The hidden layer can have one or more sub-layers, depending on the complexity and depth of the network. The hidden layer can also have different types of neurons and activation functions, depending on the type of problem and the desired output.
The output layer is the last layer of the network that produces the final output of the network. The output layer can have one or more neurons, depending on the type of problem and the desired output. The output layer can also have different types of neurons and activation functions, depending on the type of problem and the desired output.
Here is a simple example of an artificial neural network that has one input layer, one hidden layer, and one output layer. The input layer has two neurons, the hidden layer has three neurons, and the output layer has one neuron. The network can perform a binary classification task, such as predicting whether a customer will buy a product or not.
# Import numpy for numerical computation
import numpy as np
# Define the sigmoid function
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# Define the network function
def network(x1, x2):
# Define the weights and biases of the network
w1 = 0.1
w2 = 0.2
w3 = 0.3
w4 = 0.4
w5 = 0.5
w6 = 0.6
w7 = 0.7
w8 = 0.8
w9 = 0.9
b1 = 0.1
b2 = 0.2
b3 = 0.3
b4 = 0.4
# Compute the output of the input layer
i1 = x1
i2 = x2
# Compute the output of the hidden layer
h1 = sigmoid(w1 * i1 + w2 * i2 + b1)
h2 = sigmoid(w3 * i1 + w4 * i2 + b2)
h3 = sigmoid(w5 * i1 + w6 * i2 + b3)
# Compute the output of the output layer
y = sigmoid(w7 * h1 + w8 * h2 + w9 * h3 + b4)
# Return the output
return yIn summary, artificial neural networks are a type of machine learning technique that can learn from data and perform various tasks. Artificial neural networks are composed of layers of artificial neurons that can learn from data and perform various tasks. Artificial neurons are mathematical functions that can receive inputs, perform some computation, and produce an output. The layers of artificial neural networks are the groups of neurons that are connected and perform a specific function.
In the next section, you will learn how artificial neural networks work and how they can learn from data.
3. How do Artificial Neural Networks Work?
In this section, you will learn how artificial neural networks work and how they can learn from data. You will also learn some basic concepts and techniques related to artificial neural networks, such as forward propagation, backward propagation, loss function, gradient descent, and more.
How do artificial neural networks work?
Artificial neural networks work by passing the data through the layers of neurons and producing an output. The output of each neuron depends on the inputs, the weights, the bias, and the activation function. The output of each layer is the input of the next layer, until the final output is reached.
This process of passing the data from the input layer to the output layer is called forward propagation. Forward propagation is the main computation and prediction phase of the network. Forward propagation can be represented by a mathematical equation that relates the input and output of the network.
For example, suppose we have a simple network that has one input layer with two neurons, one hidden layer with three neurons, and one output layer with one neuron. The network can perform a binary classification task, such as predicting whether a customer will buy a product or not. The network function can be written as:
# Define the network function
def network(x1, x2):
# Define the weights and biases of the network
w1 = 0.1
w2 = 0.2
w3 = 0.3
w4 = 0.4
w5 = 0.5
w6 = 0.6
w7 = 0.7
w8 = 0.8
w9 = 0.9
b1 = 0.1
b2 = 0.2
b3 = 0.3
b4 = 0.4
# Compute the output of the input layer
i1 = x1
i2 = x2
# Compute the output of the hidden layer
h1 = sigmoid(w1 * i1 + w2 * i2 + b1)
h2 = sigmoid(w3 * i1 + w4 * i2 + b2)
h3 = sigmoid(w5 * i1 + w6 * i2 + b3)
# Compute the output of the output layer
y = sigmoid(w7 * h1 + w8 * h2 + w9 * h3 + b4)
# Return the output
return yHowever, the network function is not fixed, but can be adjusted and improved based on the data. The network can learn from the data by comparing the output of the network with the actual output of the data, and updating the weights and bias accordingly. This process of updating the weights and bias based on the data is called learning or training.
How do artificial neural networks learn from data?
Artificial neural networks learn from data by minimizing the difference between the output of the network and the actual output of the data. This difference is called the error or the loss, and it measures how well the network performs on the data. The goal of learning is to find the optimal values of the weights and bias that minimize the loss.
The loss can be calculated by using a loss function, which is a mathematical function that quantifies the error or the loss. There are different types of loss functions, depending on the type of problem and the desired output. Some common loss functions are mean squared error, cross entropy, hinge loss, and more.
For example, suppose we have a binary classification problem, such as predicting whether a customer will buy a product or not. The actual output of the data is either 0 or 1, representing no or yes. The output of the network is a probability between 0 and 1, representing the confidence of the prediction. A common loss function for this type of problem is the cross entropy loss, which is defined as:
# Define the cross entropy loss function
def cross_entropy_loss(y_true, y_pred):
# Compute the loss for each data point
loss = - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
# Return the average loss over all data points
return np.mean(loss)The cross entropy loss function penalizes the network for making wrong predictions, and rewards the network for making correct predictions. The lower the loss, the better the network performs on the data.
However, the loss is not a simple function of the weights and bias, but a complex function of the inputs, the outputs, the activation functions, and the network structure. Therefore, finding the optimal values of the weights and bias that minimize the loss is not a trivial task, but a challenging optimization problem.
One of the most popular and effective methods to solve this optimization problem is the gradient descent method. The gradient descent method is an iterative algorithm that updates the weights and bias by moving in the opposite direction of the gradient of the loss function. The gradient of the loss function is the vector of partial derivatives of the loss function with respect to the weights and bias, and it indicates the direction and magnitude of the steepest increase of the loss function.
By moving in the opposite direction of the gradient, the gradient descent method can find the local minimum of the loss function, which corresponds to the optimal values of the weights and bias. The size of the step that the gradient descent method takes in each iteration is called the learning rate, and it determines how fast or slow the algorithm converges to the optimal solution. The learning rate is a hyperparameter that can be tuned by the user.
The gradient descent method can be applied to the whole data set at once, which is called batch gradient descent, or to a subset of the data set at a time, which is called mini-batch or stochastic gradient descent. The latter methods are more efficient and effective, especially for large data sets, as they can reduce the computational cost and avoid getting stuck in local minima.
This process of updating the weights and bias by using the gradient descent method is called backward propagation. Backward propagation is the main learning and training phase of the network. Backward propagation can be implemented by using the chain rule of calculus, which allows to compute the gradient of the loss function with respect to the weights and bias by propagating the errors from the output layer to the input layer.
Here is a simple example of how to implement the backward propagation for a simple network that has one input layer with two neurons, one hidden layer with three neurons, and one output layer with one neuron. The network can perform a binary classification task, such as predicting whether a customer will buy a product or not. The network uses the sigmoid activation function and the cross entropy loss function.
# Import numpy for numerical computation
import numpy as np
# Define the sigmoid function and its derivative
def sigmoid(x):
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(x):
return sigmoid(x) * (1 - sigmoid(x))
# Define the cross entropy loss function and its derivative
def cross_entropy_loss(y_true, y_pred):
# Compute the loss for each data point
loss = - (y_true * np.log(y_pred) + (1 - y_true) * np.log(1 - y_pred))
# Return the average loss over all data points
return np.mean(loss)
def cross_entropy_loss_derivative(y_true, y_pred):
# Compute the derivative of the loss for each data point
loss_derivative = - (y_true / y_pred - (1 - y_true) / (1 - y_pred))
# Return the average derivative over all data points
return np.mean(loss_derivative)
# Define the network function
def network(x1, x2, w1, w2, w3, w4, w5, w6, w7, w8, w9, b1, b2, b3, b4):
# Compute the output of the input layer
i1 = x1
i2 = x2
# Compute the output of the hidden layer
h1 = sigmoid(w1 * i1 + w2 * i2 + b1)
h2 = sigmoid(w3 * i1 + w4 * i2 + b2)
h3 = sigmoid(w5 * i1 + w6 * i2 + b3)
# Compute the output of the output layer
y = sigmoid(w7 * h1 + w8 * h2 + w9 * h3 + b4)
# Return the output and the intermediate values
return y, i1, i2, h1, h2, h3
# Define the backward propagation function
def backward_propagation(x1, x2, y_true, w1, w2, w3, w4, w5, w6, w7, w8, w9, b1, b2, b3, b4, learning_rate):
# Forward pass
y_pred, i1, i2, h1, h2, h3 = network(x1, x2, w1, w2, w3, w4, w5, w6, w7, w8, w9, b1, b2, b3, b4)
# Compute the derivative of the loss with respect to the output
dL_dy = cross_entropy_loss_derivative(y_true, y_pred)
# Compute the derivative of the output with respect to the input of the output layer
dy_dz4 = sigmoid_derivative(w7 * h1 + w8 * h2 + w9 * h3 + b4)
# Compute the derivative of the output with respect to the weights and biases of the output layer
dz4_dw7 = h1
dz4_dw8 = h2
dz4_dw9 = h3
dz4_db4 = 1
# Compute the derivative of the output of the hidden layer with respect to the input of the hidden layer
dh_dz3 = sigmoid_derivative(w5 * i1 + w6 * i2 + b3)
dh_dz2 = sigmoid_derivative(w3 * i1 + w4 * i2 + b2)
dh_dz1 = sigmoid_derivative(w1 * i1 + w2 * i2 + b1)
# Compute the derivative of the output of the hidden layer with respect to the weights and biases of the hidden layer
dz3_dw5 = i1
dz3_dw6 = i2
dz3_db3 = 1
dz2_dw3 = i1
dz2_dw4 = i2
dz2_db2 = 1
dz1_dw1 = i1
dz1_dw2 = i2
dz1_db1 = 1
# Compute the derivative of the loss with respect to the weights and biases of the output layer
dL_dw7 = dL_dy * dy_dz4 * dz4_dw7
dL_dw8 = dL_dy * dy_dz4 * dz4_dw8
dL_dw9 = dL_dy * dy_dz4 * dz4_dw9
dL_db4 = dL_dy * dy_dz4 * dz4_db4
# Compute the derivative of the loss with respect to the weights and biases of the hidden layer
dL_dw5 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz3 * dz3_dw5
dL_dw6 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz3 * dz3_dw6
dL_db3 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz3 * dz3_db3
dL_dw3 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz2 * dz2_dw3
dL_dw4 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz2 * dz2_dw4
dL_db2 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz2 * dz2_db2
dL_dw1 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz1 * dz1_dw1
dL_dw2 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz1 * dz1_dw2
dL_db1 = dL_dy * dy_dz4 * dz4_dw9 * dh_dz1 * dz1_db1
# Update the weights and biases of the output layer
w7 -= learning_rate * dL_dw7
w8 -= learning_rate * dL_dw8
w9 -= learning_rate * dL_dw9
b4 -= learning_rate * dL_db4
# Update the weights and biases of the hidden layer
w5 -= learning_rate * dL_dw5
w6 -= learning_rate * dL_dw6
b3 -= learning_rate * dL_db3
w3 -= learning_rate * dL_dw3
w4 -= learning_rate * dL_dw4
b2 -= learning_rate * dL_db2
w1 -= learning_rate * dL_dw1
w2 -= learning_rate * dL_dw24. Types of Artificial Neural Networks
In this section, you will learn about different types of artificial neural networks and their applications. You will also learn some advantages and disadvantages of each type of network.
What are the types of artificial neural networks?
Artificial neural networks can be classified into different types based on their structure, function, and learning method. There are many types of artificial neural networks, but some of the most common and popular ones are:
- Feedforward neural networks
- Recurrent neural networks
- Convolutional neural networks
- Generative adversarial networks
What are feedforward neural networks?
Feedforward neural networks, or FNN for short, are the simplest and most basic type of artificial neural networks. They are composed of layers of neurons that are connected in a forward direction, meaning that the data flows from the input layer to the output layer without any feedback loops or cycles. Feedforward neural networks can perform various tasks, such as classification, regression, clustering, and more.
Some advantages of feedforward neural networks are:
- They are easy to understand and implement
- They can learn complex nonlinear functions
- They can be trained efficiently using gradient descent and backpropagation
Some disadvantages of feedforward neural networks are:
- They have a fixed structure and size, which limits their flexibility and scalability
- They cannot handle sequential or temporal data, such as text, speech, or video
- They are prone to overfitting, which means that they memorize the training data and fail to generalize to new data
What are recurrent neural networks?
Recurrent neural networks, or RNN for short, are a type of artificial neural networks that can handle sequential or temporal data, such as text, speech, or video. They are composed of layers of neurons that are connected in a forward and backward direction, meaning that the data flows from the input layer to the output layer and also from the output layer to the input layer. Recurrent neural networks can perform various tasks, such as natural language processing, speech recognition, machine translation, and more.
Some advantages of recurrent neural networks are:
- They can process sequential or temporal data of variable length
- They can capture the long-term dependencies and context of the data
- They can generate new sequences of data, such as text or speech
Some disadvantages of recurrent neural networks are:
- They are difficult to understand and implement
- They are computationally expensive and slow to train
- They suffer from the vanishing or exploding gradient problem, which means that the gradient of the loss function becomes either too small or too large to update the weights and bias effectively
What are convolutional neural networks?
Convolutional neural networks, or CNN for short, are a type of artificial neural networks that can handle spatial data, such as images, video, or audio. They are composed of layers of neurons that are connected in a local and sparse way, meaning that each neuron is only connected to a small region of the previous layer. Convolutional neural networks can perform various tasks, such as image recognition, face detection, object detection, and more.
Some advantages of convolutional neural networks are:
- They can process spatial data of variable size
- They can extract the features and patterns of the data automatically
- They can reduce the number of parameters and computations by using local and sparse connections
Some disadvantages of convolutional neural networks are:
- They are complex and require a lot of data and resources to train
- They are sensitive to the hyperparameters and the architecture of the network
- They are not very good at handling sequential or temporal data, such as text or speech
What are generative adversarial networks?
Generative adversarial networks, or GAN for short, are a type of artificial neural networks that can generate new data that resembles the original data, such as images, video, or audio. They are composed of two networks that compete with each other: a generator network that tries to create fake data, and a discriminator network that tries to distinguish between real and fake data. Generative adversarial networks can perform various tasks, such as image synthesis, image editing, image super-resolution, and more.
Some advantages of generative adversarial networks are:
- They can create realistic and high-quality data
- They can learn from unlabeled or unsupervised data
- They can be applied to various domains and modalities of data
Some disadvantages of generative adversarial networks are:
- They are very hard to train and stabilize
- They are prone to mode collapse, which means that the generator network produces the same or similar data
- They are difficult to evaluate and measure their performance
In summary, artificial neural networks can be classified into different types based on their structure, function, and learning method. Each type of network has its own advantages and disadvantages, and can be used for different tasks and applications.
In the next section, you will learn about some applications of artificial neural networks and how they can solve real-world problems.
5. Applications of Artificial Neural Networks
In this section, you will learn about some applications of artificial neural networks and how they can solve real-world problems. You will also see some examples of artificial neural networks in action and how they can produce amazing results.
What are some applications of artificial neural networks?
Artificial neural networks can be applied to various domains and modalities of data, such as text, speech, image, video, audio, and more. They can perform various tasks, such as classification, regression, clustering, anomaly detection, generation, translation, and more. Here are some examples of applications of artificial neural networks:
- Image recognition: Artificial neural networks can recognize and classify objects, faces, scenes, and more in images. For example, [Google Photos] uses artificial neural networks to organize and search your photos based on the content, such as people, places, things, and events.
- Speech recognition: Artificial neural networks can recognize and transcribe speech into text. For example, [Microsoft Cortana] uses artificial neural networks to understand and respond to your voice commands and queries.
- Natural language processing: Artificial neural networks can process and analyze natural language, such as text or speech. They can perform various tasks, such as sentiment analysis, text summarization, question answering, and more. For example, [Microsoft Bing] uses artificial neural networks to provide relevant and accurate search results and suggestions based on your queries.
- Machine translation: Artificial neural networks can translate text or speech from one language to another. For example, [Microsoft Translator] uses artificial neural networks to translate text, speech, and images across more than 70 languages.
- Image synthesis: Artificial neural networks can generate new images that resemble the original images, such as faces, animals, landscapes, and more. For example, [This Person Does Not Exist] uses artificial neural networks to create realistic and high-quality faces of people that do not exist.
- Image editing: Artificial neural networks can edit images in various ways, such as enhancing, restoring, colorizing, stylizing, and more. For example, [DeepArt] uses artificial neural networks to transform your photos into artworks in the style of famous artists.
- Image super-resolution: Artificial neural networks can increase the resolution and quality of images, such as photos, videos, and medical images. For example, [Let’s Enhance] uses artificial neural networks to upscale and improve your images without losing details.
- Self-driving cars: Artificial neural networks can control and navigate self-driving cars, such as detecting and avoiding obstacles, following traffic rules, and planning routes. For example, [Tesla Autopilot] uses artificial neural networks to provide a full self-driving capability for your car.
- Reinforcement learning: Artificial neural networks can learn from their own actions and experiences, and optimize their behavior to achieve a goal. For example, [AlphaGo] uses artificial neural networks to play and master the game of Go, one of the most complex and challenging board games in the world.
These are just some of the many applications of artificial neural networks, and there are more to be discovered and developed in the future. Artificial neural networks have the potential to revolutionize various fields and industries, and improve our lives and society.
In the next section, you will learn about some challenges and limitations of artificial neural networks and how they can be overcome or mitigated.
6. Challenges and Limitations of Artificial Neural Networks
In this section, you will learn about some challenges and limitations of artificial neural networks and how they can be overcome or mitigated. You will also learn some best practices and tips for designing and training artificial neural networks.
What are some challenges and limitations of artificial neural networks?
Artificial neural networks are powerful and versatile machine learning techniques, but they are not perfect and have some drawbacks and difficulties. Some of the common challenges and limitations of artificial neural networks are:
- Data quality and quantity: Artificial neural networks require a large amount of high-quality and relevant data to learn and perform well. However, data can be scarce, noisy, incomplete, imbalanced, or biased, which can affect the performance and reliability of the network. Therefore, data preprocessing, cleaning, augmentation, and balancing are essential steps before training the network.
- Hyperparameter tuning: Artificial neural networks have many hyperparameters that can affect the performance and behavior of the network, such as the number and size of layers, the type and number of neurons, the activation function, the learning rate, the batch size, the regularization, and more. However, finding the optimal values of these hyperparameters is not easy and often requires trial and error, grid search, or random search. Therefore, hyperparameter tuning is a time-consuming and tedious process that can improve the network.
- Overfitting and underfitting: Artificial neural networks can suffer from overfitting or underfitting, which means that they either memorize the training data and fail to generalize to new data, or fail to capture the complexity and patterns of the data. Overfitting and underfitting can be caused by various factors, such as the data quality and quantity, the network structure and size, the learning rate, the regularization, and more. Therefore, overfitting and underfitting can be prevented or reduced by using various techniques, such as cross-validation, dropout, early stopping, and more.
- Interpretability and explainability: Artificial neural networks are often considered as black boxes, which means that they can produce accurate and impressive results, but they cannot explain how and why they produce those results. This can be problematic for some applications that require transparency, accountability, and trust, such as medical diagnosis, legal decision, and ethical judgment. Therefore, interpretability and explainability are important aspects that can enhance the understanding and trust of the network.
- Adversarial attacks and robustness: Artificial neural networks can be vulnerable to adversarial attacks, which are malicious inputs that are designed to fool or mislead the network. For example, adding a small and imperceptible noise to an image can cause the network to misclassify the image. Adversarial attacks can pose serious threats and risks for some applications that require security, safety, and reliability, such as self-driving cars, face recognition, and fraud detection. Therefore, adversarial attacks and robustness are critical issues that can affect the performance and security of the network.
These are just some of the many challenges and limitations of artificial neural networks, and there are more to be discovered and solved in the future. Artificial neural networks are not flawless and have some room for improvement and innovation.
In the next section, you will learn some best practices and tips for designing and training artificial neural networks.
7. Conclusion
In this tutorial, you have learned the basics and principles of artificial neural networks, a powerful machine learning technique that can solve complex problems such as image recognition, natural language processing, self-driving cars, and more.
You have learned what artificial neural networks are and how they are inspired by the human brain. You have learned how artificial neural networks work and how they can learn from data. You have learned about different types of artificial neural networks and their applications. You have learned about some challenges and limitations of artificial neural networks and how they can be overcome or mitigated. You have also seen some examples of artificial neural networks in action and how they can produce amazing results.
We hope that this tutorial has sparked your interest and curiosity in artificial neural networks and machine learning, and that you will continue to explore and learn more about this fascinating and exciting field.
Thank you for reading this tutorial and happy learning!
Subscribe for FREE to get your 42 pages e-book: Data Science | The Comprehensive Handbook
Get step-by-step e-books on Python, ML, DL, and LLMs.
PlainEnglish.io 🚀
Thank you for being a part of the In Plain English community! Before you go:
- Be sure to clap and follow the writer️
- Learn how you can also write for In Plain English️
- Follow us: X | LinkedIn | YouTube | Discord | Newsletter
- Visit our other platforms: Stackademic | CoFeed | Venture





