EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 360+ Courses All in One Bundle
  • Login

PyTorch Lightning

Home » Software Development » Software Development Tutorials » Python Tutorial » PyTorch Lightning

PyTorch Lightning

Introduction to PyTorch Lightning

A library available in Python language for free where the interference happens with a deep learning framework, PyTorch, is called PyTorch Lightning. The code is organized so that different experiments can be created and restructured with various inputs. Furthermore, scalable models in deep learning can be created easily using this library, where these models can be kept intact without making any contact with the hardware. This was initially released in 2019 May and can be used on multiple platforms. Though William Falcon is the original author, there are various developers, and hence the credit cannot be given to one person alone.

What is PyTorch Lightning?

PyTorch Lightning is an AI research tool mostly preferred for its high performance where deep learning boilerplate can be abstracted easily so that we have control over the code we are writing in Python. Lightning helps to scale the models, and with this, code enhancement can be done based on our requirement, and this will not scale the boilerplate. A structure is given to the research code in all the ways by the Lightning module with the help of indices and many other components.

Start Your Free Data Science Course

Hadoop, Data Science, Statistics & others

There are five sections for organizing code into the Lightning module. They are computations, train loop, validation loop, test loop, and optimizers. First, we have to init to define the computations and forward them to know where the code is pointing to from one end. Then, Training_step is the full training loop of the code, and validation_step is the full validation loop of the code. Similarly, we have test_step for the full testing loop and configure_optimizers to explain the module’s optimizers and schedulers.

Typical Project

Lightning transformers are used as an interface for training transformer models based on SOTA. We can use Lightning callbacks, accelerators, or loggers that help in better performance for training the data. Speed optimizations such as DeepSpeed ZeRo and FairScale Sharded Training can be used to enhance memory and improve performance. We can swap the models and add more configurations based on optimizers and schedulers using Hydra, a config composition. We also have an option of building from scratch with the help of transformer task abstraction that helps in the research and experimentation of the code.

These tasks help to train models with transformer models and datasets, or we can use Hydra to swap the models. The lighting module has several options like callbacks, accelerators, scaling, and many other advantages that help in managing the code based on requirements and customizations.

Here a project about lightning transformers is considered into focus.

Popular Course in this category
Sale
Python Training Program (40 Courses, 13+ Projects)40 Online Courses | 13 Hands-on Projects | 215+ Hours | Verifiable Certificate of Completion | Lifetime Access
4.8 (14,251 ratings)
Course Price

View Course

Related Courses
Programming Languages Training (41 Courses, 13+ Projects, 4 Quizzes)Angular JS Training Program (9 Courses, 7 Projects)

The first step is to install the module.

pip install lightning-transformers

Now we must take the code from the source.

git clone https://github.com/PyTorchLightning/lightning-transformers.git
cd lightning-transformers
pip install .

PyTorch Lightning – Model

We can design multi-layered neural networks using PyTorch Lightning.

import torch
from torch.nn import functional as Fun
from torch import nn
from pytorch_lightning.core.lightning import LightningModule
class LitMNIST(LightningModule):
def __init__(self):
super().__init__()
self.layer_1 = nn.Linear(14 * 14, 144)
self.layer_2 = nn.Linear(144, 288)
self.layer_3 = nn.Linear(288, 10)
def forward(self, x):
batch_size, channels, height, width = x.size()
x = x.view(batch_size, -1)
x = self.layer_1(x)
x = Fun.relu(x)
x = self.layer_2(x)
x = Fun.relu(x)
x = self.layer_3(x)
x = Fun.log_softmax(x, dim=1)
return x

We can use a Lightning module like the PyTorch module and make necessary changes. Here we are using the MNIST dataset.

class LitMNIST(LightningModule):
def training_step(self, batch, batch_idx):
x, y = batch
logits = self(x)
loss = Fun.nll_loss(logits, y)
return loss

PyTorch Lightning – Data

DataLoader is needed for Lightning modules to operate. The following code explains the data using the MNIST dataset.

from torch.utils.data import DataLoader, random_split
from torchvision.datasets import MNIST
import os
from torchvision import datasets, transforms
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
mnist_train = MNIST(os.getcwd(), train=True, download=True, transform=transform)
mnist_train = DataLoader(mnist_train, batch_size=64)

DataLoaders can be used in different ways in the Lightning module. For example, the fit function can be used in the dataloader.

model = LitMNIST()
trainer = Trainer()
trainer.fit(model, mnist_train)

We can use a lightning module inside DataLoaders for the fast processing of data in research models.

class LitMNIST(pl.LightningModule):
def train_dataloader(self):
transform = transforms.Compose([transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,))])
mnist_train = MNIST(os.getcwd(), train=True, download=True, transform=transform)
return DataLoader(mnist_train, batch_size=64)
def val_dataloader(self):
transforms = ...
mnist_val = ...
return DataLoader(mnist_val, batch_size=64)
def test_dataloader(self):
transforms = ...
mnist_test = ...
return DataLoader(mnist_test, batch_size=64)

We can use Datasets inside DataLoaders and make it functional without any additional information.

class MyDataModule(LightningDataModule):
def __init__(self):
super().__init__()
self.train_dims = None
self.vocab_size = 0
def prepare_data(self):
download_dataset()
tokenize()
build_vocab()
def setup(self, stage: Optional[str] = None):
vocab = load_vocab()
self.vocab_size = len(vocab)
self.train, self.val, self.test = load_datasets()
self.train_dims = self.train.next_batch.size()
def train_dataloader(self):
transforms = ...
return DataLoader(self.train, batch_size=64)
def val_dataloader(self):
transforms = ...
return DataLoader(self.val, batch_size=64)
def test_dataloader(self):
transforms = ...
return DataLoader(self.test, batch_size=64)

Dataset definitions can be easily fetched from the data modules.

mnist_dm = MNISTDatamodule()
model = LitModel(num_classes=mnist_dm.num_classes)
trainer.fit(model, mnist_dm)
imagenet_dm = ImagenetDatamodule()
model = LitModel(num_classes=imagenet_dm.num_classes)
trainer.fit(model, imagenet_dm)

PyTorch Lightning examples

Initially, we must install PyTorch and give the model format so that PyTorch will be aware of the dataset present in the code. Then, we should add the training details, scheduler, and optimizer in the model and present them in the code. Finally, we can load the data using the following code.

import pytorch-lightning as pylight
from torchvision import datasets,transforms
from torch.utils.data import DataLoader
class Data(pl.LightningDataModule):
def prepare_data(self):
transform=transforms.Compose([
transforms.ToTensor()
])
self.train_data = datasets.MNIST('', train=True, download=True, transform=transform)
self.test_data = datasets.MNIST('', train=False, download=True, transform=transform)
def train_dataloader(self):
return DataLoader(self.train_data, batch_size= 32, shuffle=True)
def val_dataloader(self):
return DataLoader(self.test_data, batch_size= 32, shuffle=True)
class model(pl.LightningModule):
def __init__(self):
super(model,self).__init__()
self.fc1 = nn.Linear(28*28,256)
self.fc2 = nn.Linear(256,128)
self.out = nn.Linear(128,10)
self.lr = 0.01
self.loss = nn.CrossEntropyLoss()
def configure_optimizers(self):
return SGD(self.parameters(),lr = self.lr)
def training_step(self, train_batch, batch_idx):
x, y = train_batch
logits = self.forward(x)
loss = self.loss(logits,y)
return loss

Conclusion

It is easy to use the Lightning module as the readability is more where it avoids all the engineering code and uses only the known modules in Python. Moreover, it is easy to track the code changes, and hence the reproducibility is easy in PyTorch Lightning. Also, lightning helps to run codes in GPU, CPU, and clusters without any additional management.

Recommended Articles

This is a guide to PyTorch Lightning. Here we discuss What PyTorch Lightning is along with the Typical Project and examples. You may also have a look at the following articles to learn more –

  1. Python string append
  2. Python Raw String
  3. Python Widgets
  4. CGI in Python

All in One Data Science Bundle (360+ Courses, 50+ projects)

360+ Online Courses

50+ projects

1500+ Hours

Verifiable Certificates

Lifetime Access

Learn More

0 Shares
Share
Tweet
Share
Primary Sidebar
Python Tutorial
  • PyTorch
    • PyTorch Image Classification
    • PyTorch Random
    • PyTorch Variable
    • PyTorch Activation Function
    • Python Formatted String
    • PyTorch GPU
    • PyTorch CUDA
    • PyTorch DataLoader
    • PyTorch LSTM
    • PyTorch Pad
    • PyTorch OpenCL
    • PyTorch Lightning
    • PyTorch SoftMax
    • PyTorch Flatten
    • PyTorch gan
    • PyTorch max
    • PyTorch pip
    • PyTorch Parameter
    • PyTorch Load Model
    • PyTorch Distributed
    • PyTorch BERT
    • PyTorch interpolate
    • PyTorch JIT
    • PyTorch expand
    • PyTorch AMD
    • PyTorch GRU
    • PyTorch rnn
    • PyTorch permute
    • PyTorch argmax
    • PyTorch SGD
    • PyTorch nn
    • PyTorch One Hot Encoding
  • Basics Part I
    • Introduction To Python
    • What Is Python
    • Careers in Python
    • Advantages of Python
    • Uses of Python
    • Python SQL Server
    • Python Features
    • Heap Data Structure Python
    • Scrapy cloud
    • Scrapy Python
    • Scrapy XPath
    • Python Fast And python psyco
    • Python ImportError
    • Python Recursion
    • Python Reduce
    • Local Variable in Python
    • Sparse Matrix in Python
    • Benefits and Limitations of Using Python
    • What can I do with?Python
    • Is Python a scripting language
    • clock() in Python
    • Is Python Object Oriented
    • Is Python Open Source
    • Python Socket Programming
    • Python HTTP Server
    • Useful Tips on Python Programming
    • Python You Should Be Using It
    • Python Web Development
    • Exclusive Things About Python Socket Programming (Basics)
    • Python Programming Beginners Tutorails
    • Practical Python Programming for Non-Engineers
    • Python Programming for the Absolute Beginner
    • Data Engineer with Python
    • Versions of? Python
  • Basic Part II
    • Comments in Python
    • sprintf Python
    • Finally in Python
    • Python Multiline Comment
    • Python Data Types
    • Python Variables
    • Python Variable Types
    • Python Global Variable
    • Python Variable Scope
    • Python Private Variables
    • Python Default Arguments
    • Python Command-line Arguments
    • Python try except
    • Coroutines python
    • Indentation in Python
    • Object in Python
    • Weka Python
    • Counting Sort Python
    • Hash table in Python
    • Radix Sort in Python
    • Hierarchical Cluster Python
    • Dataset in Python
    • Flask in Python
    • Python Keywords
    • Python Literals
    • Pointers in Python
    • Iterators in Python
    • Python Declare Variable
    • Python Modules
    • Python Private Method
    • Python dateutil
    • Python float to int
    • Python not equal
    • Python libraries list
    • Random forest in python
    • Data Manipulation with Python
    • Text to Speech in Python
    • Python Throw Exception
    • Python strftime
    • Python Widgets
    • Mean Shift Clustering Python
    • Sublime Text Shortcuts
    • Python User Input
    • Python Enumerate
    • Python Commands
    • Type Casting in Python
    • Python UUID
    • Abstraction in Python
    • Python Identifiers
    • Python Constants
    • What is NumPy in Python?
    • Cheat Sheet Python
  • Frameworks
    • Python Frameworks
    • Python Compilers
    • Python Editors
    • Best Compiler for Python
    • Python IDE for Windows
    • Python IDE on Linux
    • Python pseudocode
    • Iterator in Python
  • Installation
    • How To Install Python
    • Install Python on Linux
    • Install Python on Windows
    • Install Anaconda Python
  • Operator
    • Python Operators
    • Operator Precedence in Python
    • Arithmetic Operators in Python
    • Python Comparison Operators
    • Logical Operators in Python
    • Assignment Operators in Python
    • Unary Operators in Python
    • Python Ternary Operator
    • String Operators in Python
    • Python Int to String
    • Python String to Float
    • Python? string manipulation
    • Boolean Operators in Python
    • Identity Operators in Python
    • Python Bitwise Operator
    • Python Remainder Operator
    • Python object type
    • Python object serialization
    • Flask unit testing
    • Unit Testing in Python
    • Knapsack Problem Python
    • exec Python
    • Python Modulus Operator
  • Control Statement
    • Conditional Statements in Python
    • Control Statements in Python
    • If Condition in Python
    • If Else in Python
    • If Statement in Python
    • If Else Statement in Python
    • else if Statement in Python
    • Nested IF Statement in Python
    • Break Statement in Python
    • Python Switch Statement
    • Python Break Statement
  • Loops
    • Loops in Python
    • For Loop in Python
    • While Loop in Python
    • Do While Loop in Python
    • Python Nested Loops
    • Python Infinite Loop
    • Python?Event Loop
  • Sorting
    • Sorting in Python
    • Sorting Algorithms in Python
    • Bubble Sort in Python
    • Merge Sort in Python
    • Heap Sort in Python
    • Quick Sort in Python
    • Python Sorted Function
    • Sort string in Python
    • Insertion sort in Python
    • Shell sort in Python
    • Bucket Sort Python
  • Function
    • Python Built-in Functions
    • Math Functions in Python
    • Python @property decorator
    • Python String Functions
    • Python User Defined Functions
    • Trigonometric Functions in Python
    • Python Input Function
    • Python Input String
    • Python String Operations
    • Python String Contains
    • Byte to String Python
    • Python Stream
    • Python List to String
    • Python Multiline String
    • Python Regex
    • Python Regex Tester
    • Python regex replace
    • Python File Methods
    • Python Check if File Exists
    • Python Import CSV
    • Python Read CSV File
    • Python write CSV file
    • Python Delete File
    • Python File readline
    • Python if main
    • Python Main Method
    • List Method in Python
    • Python List Functions
    • Python List Comprehension
    • Python List Length
    • Python Lists Methods
    • Python Add List
    • Python List extend
    • Python Doubly Linked List
    • Recursive Function in Python
    • Copy List in Python
    • Python Copy File
    • Python Range Function
    • Python Substring
    • Python list remove()
    • Python List Index
    • Python Set Function
    • Python len Function
    • Python eval()
    • Python rstrip()
    • Pandas DataFrame.apply()
    • Python Counter
    • ord Function in Python
    • strip Function in Python
    • Split Function in Python
    • Python Round Function
    • Python Map Function
    • Python String Join
    • Python format() Function
    • Python Contextlib
    • Python Compare Strings
    • Python Return Value
    • Python List count
    • Filter in Python
    • Python Slice String
    • Python Absolute Value
    • Python Trim String
    • Python Type Function
    • Lowercase in Python
    • Python xrange
    • Python yield
    • Python Find String
    • Python Test Empty String
    • Max Function in Python
    • Python Power Function
    • pop() in Python
    • Python argparse
    • Python Pickle
    • Python Zip Function
    • Python Z Test
    • Python Split String
    • super() in Python
    • Python Extend
    • Python @staticmethod
    • Python Timezone
    • Timestamp to Date in Python
    • Python Timeit
    • Timsort Python
    • Python Property()
    • Python deepcopy
    • Python Dump
    • Python wait()
    • Statistical Analysis in Python
    • Python String Replace
    • Python PEP8
    • Python Filter Function
    • Python if then else
    • Lambda in Python
    • Python BeautifulSoup
    • BeautifulSoup Install
    • Python Sleep
    • Python Function Generator
    • Python @classmethod decorator
    • Python Endswith
    • Python BufferedReader
    • Python Async
    • Python Parser
    • Python SystemExit
    • Python pip
    • Python kwargs
  • Array
    • Arrays in Python
    • Python string to array
    • 2D Arrays In Python
    • 3d Arrays in Python
    • Multidimensional Array in Python
    • Python Array Functions
    • String Array in Python
    • Python Sort Array
    • Python Array Length
  • Inheritance
    • Inheritance in? Python
    • Single Inheritance in Python
    • Multiple Inheritance in Python
    • Multilevel Inheritance in Python
    • Interface in Python
  • Exception
    • Python Exception Handling
    • Custom Exception in Python
    • Indentation Error in Python
    • Python Memory Error
    • Python IOError
    • Python EOFError
    • Python NotImplementedError
    • Python TypeError
    • Python ValueError
    • Python AssertionError
    • Python Unicode Error
    • Python NameError
    • Python StopIteration
    • Python OverflowError
    • Python KeyboardInterrupt
  • Advanced
    • Scope in Python
    • Python Itertools
    • Python 3 xrange
    • Python Join List
    • OrderedDict in Python
    • Python Collections
    • Constructor in Python
    • Destructor in Python
    • Python Overloading
    • Python User Defined Exception
    • statsmodels Python
    • Tkinter Pack
    • Tkinter Scale
    • Tkinter Table
    • Overriding in Python
    • Function Overloading in Python
    • Method Overloading in Python
    • Operator Overloading in Python
    • Python NOT Operator
    • Method Overriding in Python
    • Encapsulation in Python
    • Static Method in Python
    • classmethod in Python
    • Assert in Python
    • Polymorphism in Python
    • Python References
    • Python Virtualenv
    • Python mkdir
    • Logistic Regression in Python
    • Dictionary in Python
    • Python Directories
    • Regular Expression in Python
    • Python Import Module
    • Python OS Module
    • Python Sys Module
    • Python Generators
    • Abstract Class in Python
    • Python File Operations
    • Sequences in Python
    • Stack in Python
    • Queue in Python
    • Deque in Python
    • Tuples in Python
    • Python Magic Method
    • Python Sets
    • Python Set Methods
    • Priority Queues in Python
    • Python Create Directory
    • Reverse Engineering with Python
    • Underscore in Python
    • Serverless Python
    • String Formatting in Python
    • f String in Python
    • Python isinstance
    • String Length Python
    • Python Concurrency
    • Python List
    • Python Initialize List
    • Python Unique List
    • Python Sort List
    • Selection Sort in Python
    • Python Reverse List
    • Python Empty List
    • List Comprehensions Python
    • List Operations in Python
    • Python Repository
    • Python Database Connection
    • Python SQLite
    • Data Analysis with Python
    • Python Language
    • Python SQL
    • Python SQL Library
    • Python SQLite Create Database
    • Send Mail in Python
    • Bash Scripting and Python
    • Violent Python Book
    • NLP in Python
    • Matplotlib In Python
    • Gray Hat Python: Security
    • Python Subprocess
    • Python bokeh
    • Python pillow resize image
    • Python xlrd
    • Python Projects
    • Python Threading Timer
    • Python Threadpool
    • Python Statistics Module
    • How to Call a Function in Python?
    • Python Curl
    • JSON in Python
    • Python JSON to string
    • Python json.dumps
    • Python Turtle
    • Python testing framework
    • Python Unit Test
    • pass Keyword in Python
    • Tokenization in Python
    • Random Module in Python
    • Python Multiprocessing
    • Python getattr
    • Collection Module in Python
    • Print Statement in Python
    • Python Countdown Timer
    • Python Context Manager
    • File Handling in Python
    • Python Event Handler
    • Python Print Table
    • Python Docstring
    • Python Dictionary Keys
    • Python Iterator Dictionary
    • Python Class Attributes
    • Python Dictionary Methods
    • Namedtuple Python
    • OpenCV Python
    • OpenCV erode
    • OpenCV save image
    • Traceback in Python
    • Decorator in Python
    • Python Pygame
    • Python Class Constants
    • Python Validation
    • Python Switch Case
    • Linked List in Python
    • DFS Algorithm in Python
    • Priority queue algorithm
    • Tree Traversal Python
    • AVL Tree Python
    • Binary Search Tree Python
    • Binary tree in Python
    • Binary search in Python
    • BFS Algorithm Python
    • Python Rest Server
    • Python Yield vs Return
    • Python Pickle vs JSON
    • Python Read Excel File
    • Seaborn
    • Seaborn Histogram
    • Seaborn heatmap
    • Seaborn barplot
    • Seaborn Scatter Plot
  • Tkinter
    • Python Tkinter
    • Tkinter Widgets
    • Tkinter background image
    • Tkinter button color
    • Tkinter place
    • Python Tkinter Button
    • Python Tkinter Canvas
    • Tkinter Frame
    • Tkinter LabelFrame
    • Python Tkinter Label
    • Tkinter Text
    • Tkinter Scrollbar
    • Tkinter Listbox
    • Tkinter Spinbox
    • Tkinter Checkbutton
    • Tkinter Menu
    • Tkinter Menubutton
    • Tkinter OptionMenu
    • Tkinter Messagebox
    • Tkinter Grid
    • Python Tkinter Entry
    • Tkinter after
    • Tkinter Colors
    • Tkinter Font
    • Tkinter PhotoImage
    • Tkinter TreeView
    • Tkinter Notebook
    • Tkinter Combobox
    • Tkinter Bind
    • Tkinter Icon
    • Tkinter Window Size
    • Tkinter Color Chart
    • Tkinter Slider
    • Tkinter Calculator
    • Tkinter geometry
    • Tkinter image
    • Tkinter input box
    • Tkinter mainloop
  • Programs
    • Patterns in Python
    • Star Patterns in Python
    • Swapping in Python
    • Factorial in Python
    • Fibonacci Series in Python
    • Reverse Number in Python
    • Binary number in Python
    • Palindrome in Python
    • Random Number Generator in Python
    • Prime Numbers in Python
    • Armstrong Number in Python
    • Perfect Number in Python
    • Strong Number in Python
    • Leap Year Program in Python
    • Anagram Program in Python
    • Square Root in Python
    • Python Reverse String
    • Python Object to String
    • Python string append
    • Python Raw String
    • Python Object to JSON
    • Python Classmethod vs Staticmethod
  • Python 3
    • Python 3 Commands
    • Python 3 input
    • Python 3 JSON
    • Python 3 string
    • Python 3 try-except
    • Python 3 RegEx
    • Python 3 Object-Oriented Programming
    • Python 3 zip
    • Python 3 Exception
    • Python 3 write to file
    • Python 3 Functions
    • Python 3 List Function
    • Python 3 While Loop
    • Python 3 Global Variable
    • Python 3 String Methods
    • Python 3 interpreter
    • Python 3 REPL
    • Python 3 else if
    • Python 3 basics
    • Python 3 cheat sheet
    • Python 3 Print
    • Python 3 For Loop
    • Python 3 range
    • Python 3 Dictionary
    • Python 3 has_key
    • Python 3 URLlib
  • NLTK
    • What is NLTK
    • NLTK Stemming
    • NLTK word_tokenize
    • NLTK WordNet
  • SpaCy
    • SpaCy ner
    • SpaCy Tokenizer
    • SpaCy NLP
    • SpaCy models
  • Interview Question
    • Python Interview Questions And Answers

Related Courses

Python Certification Course

Programming Languages Courses

Angular JS Certification Training

Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Live Classes
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Database Management
  • Machine Learning
  • All Tutorials
Certification Courses
  • All Courses
  • Data Science Course - All in One Bundle
  • Machine Learning Course
  • Hadoop Certification Training
  • Cloud Computing Training Course
  • R Programming Course
  • AWS Training Course
  • SAS Training Course

© 2022 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA Login

Forgot Password?

By signing up, you agree to our Terms of Use and Privacy Policy.

Let’s Get Started

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more

Special Offer - Python Certification Course Learn More