Skip to content
geeksforgeeks
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • Tutorials
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
  • Practice
    • Build your AI Agent
    • GfG 160
    • Problem of the Day
    • Practice Coding Problems
    • GfG SDE Sheet
  • Contests
    • Accenture Hackathon (Ending Soon!)
    • GfG Weekly [Rated Contest]
    • Job-A-Thon Hiring Challenge
    • All Contests and Events
  • Data Science
  • Data Science Projects
  • Data Analysis
  • Data Visualization
  • Machine Learning
  • ML Projects
  • Deep Learning
  • NLP
  • Computer Vision
  • Artificial Intelligence
Open In App
Next Article:
Variational AutoEncoders
Next article icon

How Autoencoders works ?

Last Updated : 01 Mar, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

Autoencoders is a type of neural network used for unsupervised learning particularly for tasks like dimensionality reduction, anomaly detection and feature extraction. It consists of two main parts: an encoder and a decoder. The goal of an autoencoder is to learn a more efficient representation of the data by minimizing the difference between the input and its reconstructed version.

In this article we will learn how autoencoders work, their cost function and optimization techniques and how to implement a deep convolutional autoencoder.

Understanding Working of AutoEncoders

Autoencoder is made up of two main parts: the encoder and the decoder.

  • Encoder: The encoder takes an input sample [Tex] x_i[/Tex] and compresses it into a lower-dimensional representation often called the latent space or latent code denoted by [Tex]z_i = e(x_i)[/Tex]
  • Decoder: The decoder then reconstructs the original input from this compressed representation producing an output denoted by [Tex]\hat{x}_i = d(z_i)[/Tex]

The goal of the autoencoder is to learn a mapping from the input space to a lower-dimensional space and back to the original space. This is done by training the network to minimize the difference between the input and its reconstruction.

Cost Function and Optimization

In the context of an autoencoder the cost function finds how well the autoencoder is performing. The objective is to minimize the difference between the input sample [Tex]x_i[/Tex] and the reconstructed output[Tex] \hat{x}_i[/Tex] typically measured using the Mean Squared Error (MSE). The MSE is defined as:

[Tex]MSE = \frac{1}{n} \sum_{i=1}^{n} (x_i – \hat{x}_i)^2[/Tex]

Where:

  • [Tex]n[/Tex] is the number of samples,
  • [Tex]x_i[/Tex] is the input sample,
  • [Tex]\hat{x}_i[/Tex] is the reconstructed output.

The goal is to minimize this error through optimization techniques such as gradient descent or the Adam optimizer which adjusts the weights of the encoder and decoder networks to reduce the reconstruction error.

Variational Autoencoder

A Variational Autoencoder (VAE) is an extension of the basic autoencoder that models the data distribution probabilistically. Instead of encoding the input into a single point in latent space, the encoder outputs a probabilistic distribution [Tex]q(z)[/Tex] over the latent code [Tex]z[/Tex]. The decoder then learns to map this distribution back to the original data space.

The main objective in a VAE is to learn a distribution that approximates the true data distribution [Tex]p_{\text{data}}(x)[/Tex]. To measure how close the learned distribution [Tex]q(z) [/Tex]is to the true distribution we use the Kullback-Leibler (KL) Divergence:

[Tex]KL(p_{\text{data}} \parallel q) = \sum p_{\text{data}}(x) \log\left( \frac{p_{\text{data}}(x)}{q(z)} \right)[/Tex]

KL divergence finds how much the learned distribution away from the true data distribution. In VAE this term is added to the loss function to encourage the model to learn a latent distribution that is as close as possible to the true distribution of the data.

The optimization process aims to minimize both the reconstruction error (MSE) and the KL divergence, which results in the combined objective function:

[Tex]\mathcal{L} = \text{MSE}(x_i, \hat{x}_i) + \lambda \cdot KL(p_{\text{data}} \parallel q)[/Tex]

where [Tex]\lambda[/Tex] is a regularization parameter that controls the relative importance of the reconstruction loss and the KL divergence.

Equivalence of MSE and KL Divergence

In cases where both the data distribution [Tex]p_{\text{data}}(x)[/Tex] and the latent distribution [Tex]q(z)[/Tex] are Gaussian distributions the KL become equivalent. This is because minimizing the KL divergence between two Gaussian distributions is mathematically the same as minimizing the MSE between their means and variances.

Thus when working with Gaussian distributions the VAE’s objective function simplifies to the standard MSE making it easier to compute and optimize.

Bernoulli Distribution and Binary Data

For datasets where the data is binary or normalized between 0 and 1 (for example pixel values in images) the appropriate model is to use a Bernoulli distribution for both [Tex]p_{\text{data}}(x)[/Tex] and [Tex]q(z)[/Tex]. The output of the decoder is typically modeled using a sigmoid activation function ensuring that the output values are constrained to the range [0, 1] which can be interpreted as probabilities.

In this case the cost function changes to Binary Cross-Entropy which is more suitable for binary or probabilistic data:

[Tex]\text{Binary Cross-Entropy} = – \sum_{i=1}^{n} \left[ x_i \log(\hat{x}_i) + (1 – x_i) \log(1 – \hat{x}_i) \right][/Tex]

Where:

  • [Tex]x_i[/Tex] is the binary input data (0 or 1),
  • [Tex]\hat{x}_i[/Tex] is the predicted probability output by the decoder (after applying the sigmoid function).

This cost function is used when reconstructing binary or probabilistic data such as tasks involving binary classification or image generation with binary-valued pixels.

Implementing a deep convolutional autoencoder

This guide explains how to build a deep convolutional autoencoder using TensorFlow. We’ll train it on the Olivetti Faces dataset which contains 400 grayscale images (64×64 pixels each). The autoencoder will compress and reconstruct these images.

Step 1: Load the Dataset

We will use the Olivetti Faces dataset which contains grayscale face images. The Olivetti Faces dataset is commonly used in face recognition tasks.

We first load the dataset using fetch_olivetti_faces from sklearn.datasets.

  • fetch_olivetti_faces(): Downloads the dataset.
  • shuffle=True: Mixes the data to avoid patterns during training.
  • random_state=1000: Ensures the shuffle order is always the same for reproducibility.
Python
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from tensorflow import keras from tensorflow.keras import layers from sklearn.datasets import fetch_olivetti_faces  faces = fetch_olivetti_faces(shuffle=True, random_state=1000) X_train = faces['images'] 

Step 2: Resize the Images

Now to increase the speed of our computation we will resize them to 32 × 32. This will also help avoid any memory issues. We may lose a minor visual precision. Note that you can skip this if you have high computational resources.  

Python
width, height = 32, 32 X_train = tf.image.resize(X_train[..., np.newaxis], (width, height)) 

Step 3: Define Constants

Now let’s setting up training parameters

  • nb_epochs: More epochs give better performance but take more time.
  • batch_size: Smaller batches need less memory but may take longer to converge.
  • code_length: Size of the compressed data representing the image.
Python
nb_epochs = 100 batch_size = 50 code_length = 256 

Step 4: Adding Noise to Images

To make the autoencoder more robust we add Gaussian noise to the images. This will be the input to the autoencoder during training.

  • tf.random.normal(): Creates random noise.
  • noise_factor: Controls how much noise is added.
  • tf.clip_by_value(): Keeps pixel values between 0 and 1 (valid grayscale range).
Python
def add_noise(images, noise_factor=0.2):     noisy_images = images + noise_factor * tf.random.normal(shape=images.shape)     return tf.clip_by_value(noisy_images, 0.0, 1.0) 

Step 5: Define the Autoencoder

  • Conv2D: Extracts features from the image.
  • Flatten: Converts the image into a 1D vector.
  • Dense: Fully connected layer for compression.
  • Conv2DTranspose: Up sampling layers to reconstruct the image.
  • sigmoid: Keeps pixel values between 0 and 1.
Python
def build_autoencoder(input_shape, code_length=256):     input_img = keras.Input(shape=input_shape)      x = layers.Conv2D(16, (3, 3), strides=(2, 2), activation='relu', padding='same')(input_img)     x = layers.Conv2D(32, (3, 3), strides=(1, 1), activation='relu', padding='same')(x)     x = layers.Conv2D(64, (3, 3), strides=(1, 1), activation='relu', padding='same')(x)     x = layers.Conv2D(128, (3, 3), strides=(1, 1), activation='relu', padding='same')(x)     x = layers.Flatten()(x)     code_layer = layers.Dense(code_length, activation='sigmoid')(x)      x = layers.Dense((width // 2) * (height // 2) * 128, activation='relu')(code_layer)     x = layers.Reshape((width // 2, height // 2, 128))(x)     x = layers.Conv2DTranspose(128, (3, 3), strides=(2, 2), activation='relu', padding='same')(x)     x = layers.Conv2DTranspose(64, (3, 3), strides=(1, 1), activation='relu', padding='same')(x)     x = layers.Conv2DTranspose(32, (3, 3), strides=(1, 1), activation='relu', padding='same')(x)     output_img = layers.Conv2DTranspose(1, (3, 3), strides=(1, 1), activation='sigmoid', padding='same')(x)      autoencoder = keras.Model(input_img, output_img)     return autoencoder 

Step 6: Define and Compile the Model

Now we define the loss function (MSE) and the optimizer (Adam).

Python
input_shape = (width, height, 1) autoencoder = build_autoencoder(input_shape)  autoencoder.compile(optimizer=keras.optimizers.Adam(learning_rate=0.001), loss='mse') 

Step 7: Train the Model

We train the model to reconstruct noisy images and the model learns how to remove noise from images during training.

Python
X_train_noisy = add_noise(X_train) autoencoder.fit(X_train_noisy, X_train, epochs=nb_epochs, batch_size=batch_size, shuffle=True) 

Output:


Epoch 1/100 8/8 ━━━━━━━━━━━━━━━━━━━━ 23s 2s/step – loss: 0.0268
Epoch 2/100 8/8 ━━━━━━━━━━━━━━━━━━━━ 22s 2s/step – loss: 0.0212
Epoch 3/100 8/8 ━━━━━━━━━━━━━━━━━━━━ 19s 2s/step – loss: 0.0206
…
Epoch 100/100 8/8 ━━━━━━━━━━━━━━━━━━━━ 11s 1s/step – loss: 0.0165

Step 8: Show Original and Reconstructed Images

Finally we display the original and reconstructed images

Python
def show_images(original, reconstructed, num=5):     plt.figure(figsize=(10, 4))     for i in range(num):         plt.subplot(2, num, i + 1)         plt.imshow(original[i].squeeze(), cmap='gray')         plt.axis('off')         plt.title("Original")          plt.subplot(2, num, num + i + 1)         plt.imshow(reconstructed[i].squeeze(), cmap='gray')         plt.axis('off')         plt.title("Reconstructed")      plt.show()  X_train_noisy = X_train_noisy.numpy() if isinstance(X_train_noisy, tf.Tensor) else X_train_noisy  reconstructed_images = autoencoder.predict(X_train_noisy[:5]) show_images(X_train_noisy, reconstructed_images) 

Output:

Initially the reconstructed images appear blurred and noisy indicating that the model is still learning and hasn’t fully captured the necessary features of the images. However as the model progresses in training the reconstructions improve becoming clearer and more similar to the original images.



Next Article
Variational AutoEncoders

M

muktik
Improve
Article Tags :
  • AI-ML-DS
  • Deep Learning
  • AI-ML-DS With Python

Similar Reads

  • Deep Learning Tutorial
    Deep Learning tutorial covers the basics and more advanced topics, making it perfect for beginners and those with experience. Whether you're just starting or looking to expand your knowledge, this guide makes it easy to learn about the different technologies of Deep Learning. Deep Learning is a bran
    5 min read
  • Introduction to Deep Learning

    • Introduction to Deep Learning
      Deep Learning is transforming the way machines understand, learn, and interact with complex data. Deep learning mimics neural networks of the human brain, it enables computers to autonomously uncover patterns and make informed decisions from vast amounts of unstructured data. Deep Learning leverages
      8 min read

    • Difference Between Artificial Intelligence vs Machine Learning vs Deep Learning
      Artificial Intelligence is basically the mechanism to incorporate human intelligence into machines through a set of rules(algorithm). AI is a combination of two words: "Artificial" meaning something made by humans or non-natural things and "Intelligence" meaning the ability to understand or think ac
      14 min read

    Basic Neural Network

    • Difference between ANN and BNN
      Do you ever think of what it's like to build anything like a brain, how these things work, or what they do? Let us look at how nodes communicate with neurons and what are some differences between artificial and biological neural networks. 1. Artificial Neural Network: Artificial Neural Network (ANN)
      3 min read

    • Single Layer Perceptron in TensorFlow
      Single Layer Perceptron is inspired by biological neurons and their ability to process information. To understand the SLP we first need to break down the workings of a single artificial neuron which is the fundamental building block of neural networks. An artificial neuron is a simplified computatio
      4 min read

    • Multi-Layer Perceptron Learning in Tensorflow
      Multi-Layer Perceptron (MLP) is an artificial neural network widely used for solving classification and regression tasks. MLP consists of fully connected dense layers that transform input data from one dimension to another. It is called "multi-layer" because it contains an input layer, one or more h
      9 min read

    • Deep Neural net with forward and back propagation from scratch - Python
      This article aims to implement a deep neural network from scratch. We will implement a deep neural network containing two input layers, a hidden layer with four units and one output layer. The implementation will go from scratch and the following steps will be implemented. Algorithm:1. Loading and v
      6 min read

    • Understanding Multi-Layer Feed Forward Networks
      Let's understand how errors are calculated and weights are updated in backpropagation networks(BPNs). Consider the following network in the below figure. The network in the above figure is a simple multi-layer feed-forward network or backpropagation network. It contains three layers, the input layer
      7 min read

    • List of Deep Learning Layers
      Deep learning (DL) is characterized by the use of neural networks with multiple layers to model and solve complex problems. Each layer in the neural network plays a unique role in the process of converting input data into meaningful and insightful outputs. The article explores the layers that are us
      7 min read

    Activation Functions

    • Activation Functions
      To put it in simple terms, an artificial neuron calculates the 'weighted sum' of its inputs and adds a bias, as shown in the figure below by the net input. Mathematically, [Tex]\text{Net Input} =\sum \text{(Weight} \times \text{Input)+Bias}[/Tex] Now the value of net input can be any anything from -
      3 min read

    • Types Of Activation Function in ANN
      The biological neural network has been modeled in the form of Artificial Neural Networks with artificial neurons simulating the function of a biological neuron. The artificial neuron is depicted in the below picture: Each neuron consists of three major components:  A set of 'i' synapses having weigh
      4 min read

    • Activation Functions in Pytorch
      In this article, we will Understand PyTorch Activation Functions. What is an activation function and why to use them?Activation functions are the building blocks of Pytorch. Before coming to types of activation function, let us first understand the working of neurons in the human brain. In the Artif
      5 min read

    • Understanding Activation Functions in Depth
      In artificial neural networks, the activation function of a neuron determines its output for a given input. This output serves as the input for subsequent neurons in the network, continuing the process until the network solves the original problem. Consider a binary classification problem, where the
      6 min read

    Artificial Neural Network

    • Artificial Neural Networks and its Applications
      As you read this article, which organ in your body is thinking about it? It's the brain, of course! But do you know how the brain works? Well, it has neurons or nerve cells that are the primary units of both the brain and the nervous system. These neurons receive sensory input from the outside world
      9 min read

    • Gradient Descent Optimization in Tensorflow
      Gradient descent is an optimization algorithm used to find the values of parameters (coefficients) of a function (f) that minimizes a cost function. In other words, gradient descent is an iterative algorithm that helps to find the optimal solution to a given problem. In this blog, we will discuss gr
      15+ min read

    • Choose Optimal Number of Epochs to Train a Neural Network in Keras
      One of the critical issues while training a neural network on the sample data is Overfitting. When the number of epochs used to train a neural network model is more than necessary, the training model learns patterns that are specific to sample data to a great extent. This makes the model incapable t
      6 min read

    Classification

    • Python | Classify Handwritten Digits with Tensorflow
      Classifying handwritten digits is the basic problem of the machine learning and can be solved in many ways here we will implement them by using TensorFlowUsing a Linear Classifier Algorithm with tf.contrib.learn linear classifier achieves the classification of handwritten digits by making a choice b
      4 min read

    • Train a Deep Learning Model With Pytorch
      Neural Network is a type of machine learning model inspired by the structure and function of human brain. It consists of layers of interconnected nodes called neurons which process and transmit information. Neural networks are particularly well-suited for tasks such as image and speech recognition,
      6 min read

    Regression

    • Linear Regression using PyTorch
      Linear Regression is a very commonly used statistical method that allows us to determine and study the relationship between two continuous variables. The various properties of linear regression and its Python implementation have been covered in this article previously. Now, we shall find out how to
      4 min read

    • Linear Regression Using Tensorflow
      We will briefly summarize Linear Regression before implementing it using TensorFlow. Since we will not get into the details of either Linear Regression or Tensorflow, please read the following articles for more details: Linear Regression (Python Implementation)Introduction to TensorFlowIntroduction
      6 min read

    Hyperparameter tuning

    • Hyperparameter tuning
      Machine Learning model is defined as a mathematical model with several parameters that need to be learned from the data. By training a model with existing data we can fit the model parameters. However there is another kind of parameter known as hyperparameters which cannot be directly learned from t
      8 min read

    Introduction to Convolution Neural Network

    • Introduction to Convolution Neural Network
      Convolutional Neural Network (CNN) is an advanced version of artificial neural networks (ANNs), primarily designed to extract features from grid-like matrix datasets. This is particularly useful for visual datasets such as images or videos, where data patterns play a crucial role. CNNs are widely us
      8 min read

    • Digital Image Processing Basics
      Digital Image Processing means processing digital image by means of a digital computer. We can also say that it is a use of computer algorithms, in order to get enhanced image either to extract some useful information. Digital image processing is the use of algorithms and mathematical models to proc
      7 min read

    • Difference between Image Processing and Computer Vision
      Image processing and Computer Vision both are very exciting field of Computer Science. Computer Vision: In Computer Vision, computers or machines are made to gain high-level understanding from the input digital images or videos with the purpose of automating tasks that the human visual system can do
      2 min read

    • CNN | Introduction to Pooling Layer
      Pooling layer is used in CNNs to reduce the spatial dimensions (width and height) of the input feature maps while retaining the most important information. It involves sliding a two-dimensional filter over each channel of a feature map and summarizing the features within the region covered by the fi
      5 min read

    • CIFAR-10 Image Classification in TensorFlow
      Prerequisites:Image ClassificationConvolution Neural Networks including basic pooling, convolution layers with normalization in neural networks, and dropout.Data Augmentation.Neural Networks.Numpy arrays.In this article, we are going to discuss how to classify images using TensorFlow. Image Classifi
      8 min read

    • Implementation of a CNN based Image Classifier using PyTorch
      Introduction: Introduced in the 1980s by Yann LeCun, Convolution Neural Networks(also called CNNs or ConvNets) have come a long way. From being employed for simple digit classification tasks, CNN-based architectures are being used very profoundly over much Deep Learning and Computer Vision-related t
      9 min read

    • Convolutional Neural Network (CNN) Architectures
      Convolutional Neural Network(CNN) is a neural network architecture in Deep Learning, used to recognize the pattern from structured arrays. However, over many years, CNN architectures have evolved. Many variants of the fundamental CNN Architecture This been developed, leading to amazing advances in t
      11 min read

    • Object Detection vs Object Recognition vs Image Segmentation
      Object Recognition: Object recognition is the technique of identifying the object present in images and videos. It is one of the most important applications of machine learning and deep learning. The goal of this field is to teach machines to understand (recognize) the content of an image just like
      5 min read

    • YOLO v2 - Object Detection
      In terms of speed, YOLO is one of the best models in object recognition, able to recognize objects and process frames at the rate up to 150 FPS for small networks. However, In terms of accuracy mAP, YOLO was not the state of the art model but has fairly good Mean average Precision (mAP) of 63% when
      6 min read

    Recurrent Neural Network

    • Natural Language Processing (NLP) Tutorial
      Natural Language Processing (NLP) is the branch of Artificial Intelligence (AI) that gives the ability to machine understand and process human languages. Human languages can be in the form of text or audio format. Applications of NLPThe applications of Natural Language Processing are as follows: Voi
      5 min read

    • Introduction to NLTK: Tokenization, Stemming, Lemmatization, POS Tagging
      Natural Language Toolkit (NLTK) is one of the largest Python libraries for performing various Natural Language Processing tasks. From rudimentary tasks such as text pre-processing to tasks like vectorized representation of text - NLTK's API has covered everything. In this article, we will accustom o
      5 min read

    • Word Embeddings in NLP
      Word Embeddings are numeric representations of words in a lower-dimensional space, capturing semantic and syntactic information. They play a vital role in Natural Language Processing (NLP) tasks. This article explores traditional and neural approaches, such as TF-IDF, Word2Vec, and GloVe, offering i
      15+ min read

    • Introduction to Recurrent Neural Networks
      Recurrent Neural Networks (RNNs) work a bit different from regular neural networks. In neural network the information flows in one direction from input to output. However in RNN information is fed back into the system after each step. Think of it like reading a sentence, when you're trying to predic
      12 min read

    • Recurrent Neural Networks Explanation
      Today, different Machine Learning techniques are used to handle different types of data. One of the most difficult types of data to handle and the forecast is sequential data. Sequential data is different from other types of data in the sense that while all the features of a typical dataset can be a
      8 min read

    • Sentiment Analysis with an Recurrent Neural Networks (RNN)
      Recurrent Neural Networks (RNNs) excel in sequence tasks such as sentiment analysis due to their ability to capture context from sequential data. In this article we will be apply RNNs to analyze the sentiment of customer reviews from Swiggy food delivery platform. The goal is to classify reviews as
      3 min read

    • Short term Memory
      In the wider community of neurologists and those who are researching the brain, It is agreed that two temporarily distinct processes contribute to the acquisition and expression of brain functions. These variations can result in long-lasting alterations in neuron operations, for instance through act
      5 min read

    • What is LSTM - Long Short Term Memory?
      Long Short-Term Memory (LSTM) is an enhanced version of the Recurrent Neural Network (RNN) designed by Hochreiter & Schmidhuber. LSTMs can capture long-term dependencies in sequential data making them ideal for tasks like language translation, speech recognition and time series forecasting. Unli
      7 min read

    • Long Short Term Memory Networks Explanation
      Prerequisites: Recurrent Neural Networks To solve the problem of Vanishing and Exploding Gradients in a Deep Recurrent Neural Network, many variations were developed. One of the most famous of them is the Long Short Term Memory Network(LSTM). In concept, an LSTM recurrent unit tries to "remember" al
      7 min read

    • LSTM - Derivation of Back propagation through time
      Long Short-Term Memory (LSTM) are a type of neural network designed to handle long-term dependencies by handling the vanishing gradient problem. One of the fundamental techniques used to train LSTMs is Backpropagation Through Time (BPTT) where we have sequential data. In this article we summarize ho
      4 min read

    • Text Generation using Recurrent Long Short Term Memory Network
      LSTMs are a type of neural network that are well-suited for tasks involving sequential data such as text generation. They are particularly useful because they can remember long-term dependencies in the data which is crucial when dealing with text that often has context that spans over multiple words
      6 min read

geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences