Explainable AI (XAI)

рдЕрдм рд╣рдо рдПрдХ рдмрд╣реБрдд рдЬрд╝рд░реВрд░реА рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╡рд┐рд╖рдп рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВ тАФ рдЬрд┐рд╕рдХрд╛ рдордХрд╝рд╕рдж рд╣реИ AI рдХреЛ “рдХреНрдпреЛрдВ” рдФрд░ “рдХреИрд╕реЗ” рд╕рдордЭрд╛рдирд╛ред

ЁЯза тАЬAI рдХрд╛ рдлрд╝реИрд╕рд▓рд╛ рд╕рдордЭ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП тАУ рдХрд╛рд▓рд╛ рдЬрд╛рджреВ рдирд╣реАрдВредтАЭ


ЁЯФ╖ 1. What is Explainable AI?

Explainable AI (XAI) рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ рдХрд┐ AI/ML models рдХреЗ рдирд┐рд░реНрдгрдп рд╕рд╛рдлрд╝, рдкрд╛рд░рджрд░реНрд╢реА рдФрд░ рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд╕рдордЭрдиреЗ рд▓рд╛рдпрдХ рд╣реЛрдВред

“Why did the model predict this?”
“What part of the input influenced the decision?”


ЁЯФ╢ 2. Why XAI is Important?

рдХрд╛рд░рдгрдЙрджрд╛рд╣рд░рдг
тЬЕ TrustDoctor рдХреЛ explainable model рдЪрд╛рд╣рд┐рдП
тЬЕ DebuggingDeveloper model рдХреА рдЧрд▓рддреА рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
тЬЕ FairnessBias рдпрд╛ discrimination detect рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
тЬЕ RegulationGDPR / Medical AI рдореЗрдВ рдЬрд░реВрд░реА рд╣реИ

ЁЯФ╖ 3. Black Box vs Explainable Models

Model TypeExplainability
Linear RegressionтЬЕ High
Decision TreesтЬЕ Medium
Deep Neural NetsтЭМ Low (Black box)
Transformers, CNNтЭМ Complex

рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ DNN, CNN, Transformers рдЬреИрд╕реЗ models рдХреЗ рд▓рд┐рдП XAI techniques рдЪрд╛рд╣рд┐рдПред


ЁЯФ╢ 4. Popular XAI Techniques

тЬЕ A. Feature Importance (Tabular data)

  • Tree-based models (like Random Forests) naturally рдмрддрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди-рд╕рд╛ feature рдХрд┐рддрдирд╛ important рд╣реИ.

тЬЕ B. LIME (Local Interpretable Model-Agnostic Explanations)

Model рдХреА prediction рдХреЗ рдЖрд╕рдкрд╛рд╕ рдПрдХ simple interpretable model fit рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

pip install lime
from lime.lime_tabular import LimeTabularExplainer

тЬЕ C. SHAP (SHapley Additive exPlanations)

Game Theory рдЖрдзрд╛рд░рд┐рдд: рд╣рд░ feature рдХреА contribution value рдирд┐рдХрд╛рд▓реА рдЬрд╛рддреА рд╣реИред

pip install shap
import shap
explainer = shap.Explainer(model.predict, X_test)
shap_values = explainer(X_test[:10])
shap.plots.waterfall(shap_values[0])

тЬЕ D. Saliency Maps (Image models)

CNN model рдХреЗ output рдХреЛ рдХрд┐рд╕ image region рдиреЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛?

# torch.autograd + image gradient тЖТ heatmap

тЬЕ E. Grad-CAM (CNN explainability)

рдХрд┐рд╕реА image рдореЗрдВ рдХреМрди-рд╕реЗ рд╣рд┐рд╕реНрд╕реЗ рдиреЗ prediction рдХреЛ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ influence рдХрд┐рдпрд╛?

pip install grad-cam
  • Input image тЖТ CNN тЖТ last conv layer тЖТ gradients тЖТ visualization map

тЬЕ F. Attention Visualization (Transformer models)

Transformer models (like BERT, GPT) рдореЗрдВ Attention Score рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ model рдиреЗ рдХрд┐рд╕ word рдкрд░ рд╕рдмрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдзреНрдпрд╛рди рджрд┐рдпрд╛ред

from transformers import BertTokenizer, BertModel
# Visualize attention weights

ЁЯФ╖ 5. Real-World Applications

DomainExplanation Use
HealthcareDoctor рдХреЛ рдкрддрд╛ рдЪрд▓реЗ AI рдиреЗ рдХреНрдпрд╛ рджреЗрдЦрд╛
FinanceLoan rejection рдХреЗ рдХрд╛рд░рдг рд╕рдордЭрд╛рдирд╛
LegalрдХрд┐рд╕реА рднреА decision рдХрд╛ рдХрд╛рд░рдг trace рдХрд░рдирд╛
Autonomous CarsSensor input рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдлрд╝реИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рд▓рд┐рдпрд╛ рдЧрдпрд╛?

ЁЯФ╢ 6. Challenges in XAI

рд╕рдорд╕реНрдпрд╛рдХрд╛рд░рдг
Complex modelsMillions of parameters
No ground truthрдХреНрдпрд╛ explanation рд╕рд╣реА рд╣реИ?
Trade-offExplainability vs Accuracy

ЁЯза Summary

AspectDescription
XAI рдХреНрдпрд╛ рд╣реИAI рдХреЛ explain рдХрд░рдирд╛ рдЗрдВрд╕рд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП
рдХреНрдпреЛрдВ рдЬрд╝рд░реВрд░реАTrust, Regulation, Debugging
TechniquesLIME, SHAP, Grad-CAM, Attention
Domain UseMedical, Finance, Legal, Vision

ЁЯУЭ Practice Questions:

  1. Explainable AI рдХреА рдЬрд╝рд░реВрд░рдд рдХреНрдпреЛрдВ рд╣реИ?
  2. LIME рдФрд░ SHAP рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. CNN models рдХреЛ explain рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди-рд╕реА technique use рд╣реЛрддреА рд╣реИ?
  4. Grad-CAM рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
  5. XAI healthcare рдореЗрдВ рдХреИрд╕реЗ рдорджрдж рдХрд░рддрд╛ рд╣реИ?

Diffusion Models

рдЕрдм рд╣рдо deep learning рдХреА рд╕рдмрд╕реЗ рдЖрдзреБрдирд┐рдХ рдФрд░ рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рддрдХрдиреАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реАрдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ тАФ рдЬреЛ text-to-image рдЬреИрд╕реЗ tasks рдореЗрдВ breakthroughs рд▓рд╛рдИ рд╣реИ:

ЁЯФН рдзреАрд░реЗ-рдзреАрд░реЗ noise рдЬреЛрдбрд╝реЛ, рдлрд┐рд░ рдзреАрд░реЗ-рдзреАрд░реЗ рдЙрд╕реЗ рд╣рдЯрд╛рдХрд░ рдирдпрд╛ data generate рдХрд░реЛ!


ЁЯФ╖ 1. What are Diffusion Models?

Diffusion Models рдПрдХ рддрд░рд╣ рдХреЗ generative models рд╣реИрдВ, рдЬреЛ training рдореЗрдВ images рдореЗрдВ noise рдбрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реАрдЦрддреЗ рд╣реИрдВ рдЙрд╕реЗ рд╡рд╛рдкрд╕ original image рдореЗрдВ рдмрджрд▓рдирд╛ред

ЁЯза Goal: Noise рд╕реЗ high-quality image generate рдХрд░рдирд╛ред


ЁЯФ╢ 2. Real World Analogy

рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рдлрд╝ рддрд╕реНрд╡реАрд░ рд╣реИ, рдЬрд┐рд╕реЗ рдЖрдк рдмрд╛рд░-рдмрд╛рд░ рдереЛрдбрд╝рд╛-рдереЛрдбрд╝рд╛ рдзреБрдВрдзрд▓рд╛ (noise) рдХрд░рддреЗ рд╣реИрдВред рдЕрдм model рд╕реАрдЦрддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕ рдзреБрдВрдзрд▓реА рддрд╕реНрд╡реАрд░ рд╕реЗ рд╕рд╛рдлрд╝ рддрд╕реНрд╡реАрд░ рд╡рд╛рдкрд╕ рдмрдирд╛рдИ рдЬрд╛рдПред


ЁЯФ╖ 3. Core Idea

Diffusion Process рдореЗрдВ рджреЛ рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВ:

тЬЕ 1. Forward Process (Adding Noise)

Original image рдореЗрдВ step-by-step Gaussian noise рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

  • рдЬрд╣рд╛рдВ x_0 = original image
  • x_t = noisy image at step t
  • ╬╡ = Gaussian noise

тЬЕ 2. Reverse Process (Denoising)

Model рд╕реАрдЦрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ noise рдХреЛ step-by-step рд╣рдЯрд╛рдХрд░ original image рдХреИрд╕реЗ reconstruct рдХреА рдЬрд╛рдПред


ЁЯФ╢ 4. Intuition:

StageрдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ
Forward ProcessImage тЖТ Noise
Reverse ProcessNoise тЖТ Image (generate рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП!)

ЁЯФ╖ 5. Architecture

Diffusion models рдЖрдорддреМрд░ рдкрд░ U-Net architecture рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

  • Noise-added image input рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • Time-step embedding рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ
  • U-Net output рдХрд░рддрд╛ рд╣реИ predicted noise
  • Loss: MSE between actual noise рдФрд░ predicted noise

ЁЯФ╢ 6. Training Objective

Model рдХреЛ рд╕рд┐рдЦрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рдпрд╛рдиреА: Model рд╕рд┐рдЦреЗ рдХрд┐ original noise (╬╡) рдХреНрдпрд╛ рдерд╛, рддрд╛рдХрд┐ рдЙрд╕реЗ рд╣рдЯрд╛рдХрд░ рд╕рд╛рдлрд╝ image рдмрди рд╕рдХреЗред


ЁЯФ╖ 7. Famous Diffusion Models

ModelHighlightsOrganization
DDPMDenoising Diffusion Probabilistic ModelGoogle
Stable DiffusionText-to-Image diffusion modelStability AI
ImagenHigh-quality generation from textGoogle Brain
DALLE-2CLIP + DiffusionOpenAI

ЁЯФ╢ 8. Applications of Diffusion Models

тЬЕ Text-to-Image Generation
тЬЕ Inpainting (Missing image fill рдХрд░рдирд╛)
тЬЕ Super-resolution
тЬЕ Audio synthesis
тЬЕ 3D scene generation


ЁЯФ╖ 9. Sample Code (Simplified PyTorch)

import torch
import torch.nn as nn

class SimpleDenoiseModel(nn.Module):
def __init__(self):
super().__init__()
self.net = nn.Sequential(
nn.Linear(784, 512),
nn.ReLU(),
nn.Linear(512, 784),
)
def forward(self, x, t):
return self.net(x)

# Forward diffusion (add noise)
def add_noise(x, t):
noise = torch.randn_like(x)
alpha = 1 - 0.02 * t # Simplified
return alpha * x + (1 - alpha) * noise, noise

ЁЯза Difference from GANs

FeatureGANDiffusion Model
StableтЭМ Hard to trainтЬЕ More stable
Output QualityMedium to HighтЬЕ High
Mode CollapseтЭМ PossibleтЬЕ Rare
Training TimeFasterтЭМ Slower
Use CaseImage, video, textMostly high-fidelity images

ЁЯУЭ Practice Questions:

  1. Diffusion model рдореЗрдВ forward рдФрд░ reverse process рдХреНрдпрд╛ рд╣реЛрддреЗ рд╣реИрдВ?
  2. Stable Diffusion рдХрд┐рд╕ technique рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ?
  3. GAN рдФрд░ Diffusion рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  4. Time-step embedding рдХреНрдпреЛрдВ рдЬрд╝рд░реВрд░реА рд╣реИ?
  5. Diffusion рд╕реЗ рдХреМрди-рдХреМрди рд╕реЗ real-world tasks solve рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ?

ЁЯз╛ Summary

ConceptDescription
Forward PassClean image тЖТ Add noise
Reverse PassNoisy image тЖТ Remove noise (generate)
ArchitectureMostly U-Net
Training LossMSE between true and predicted noise
OutputNew image generated from pure noise

Self-Supervised Learning (SSL)

рдЕрдм рд╣рдо Deep Learning рдХреЗ рдПрдХ cutting-edge topic рдХреА рдУрд░ рдмрдврд╝рддреЗ рд╣реИрдВ:

ЁЯФН “Learn from data itself тАУ without explicit labels.”


ЁЯФ╖ 1. What is Self-Supervised Learning?

Self-Supervised Learning (SSL) рдПрдХ рдРрд╕реА approach рд╣реИ рдЬрд┐рд╕рдореЗрдВ model рдХреЛ рдмрд┐рдирд╛ manually labeled data рдХреЗ train рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
ЁЯСЙ рдпреЗ unlabeled data рд╕реЗ рд╣реА pseudo labels generate рдХрд░рддрд╛ рд╣реИред

Goal: Supervised learning рдЬреИрд╕реА performance, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ manually labeled dataset рдХреЗред


ЁЯФ╢ 2. SSL рдХреНрдпреЛрдВ рдЬрд╝рд░реВрд░реА рд╣реИ?

рд╕рдорд╕реНрдпрд╛рд╕рдорд╛рдзрд╛рди
Labeling data рдорд╣рдВрдЧрд╛ рд╣реИSSL human labeling рдХреЛ minimize рдХрд░рддрд╛ рд╣реИ
рдХрдИ domains рдореЗрдВ unlabeled data abundant рд╣реИSSL рдЙрд╕рд╕реЗ рдлрд╛рдпрджрд╛ рдЙрдард╛рддрд╛ рд╣реИ
Pretraining + Fine-tuning = рдмреЗрд╣рддрд░ generalizationSSL рдореЙрдбрд▓ transferable рдмрдирд╛рддрд╛ рд╣реИ

ЁЯФ╖ 3. SSL рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

тЬЕ Key Idea:

Model рдЦреБрдж рд╣реА input рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рд╕реЗ рджреВрд╕рд░рд╛ рд╣рд┐рд╕реНрд╕рд╛ predict рдХрд░рдиреЗ рдХрд╛ task рд╕реАрдЦрддрд╛ рд╣реИред

SSL Task TypeрдЙрджрд╛рд╣рд░рдг
ContrastiveTwo similar images тЖТ close representations
Masked modelingSentence рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЫрд┐рдкрд╛ рджреЛ тЖТ predict рдХрд░реЛ
Pretext tasksRotation predict рдХрд░рдирд╛, Colorization, etc.

ЁЯФ╢ 4. Popular Self-Supervised Tasks

тЬЕ A. Contrastive Learning (Image)

рдПрдХ рд╣реА object рдХреЗ рджреЛ augmentations тЖТ similar representation
рдЕрд▓рдЧ-рдЕрд▓рдЧ object тЖТ рджреВрд░ representation

  • Frameworks: SimCLR, MoCo, BYOL
Loss = NT-Xent (Normalized Temperature-scaled Cross Entropy)

тЬЕ B. Masked Language Modeling (NLP)

Input рдореЗрдВ рдХреБрдЫ tokens рдХреЛ mask рдХрд░реЛ, рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ predict рдХрд░реЛ
рдЬреИрд╕реЗ BERT рдХрд░рддрд╛ рд╣реИ

Input: "I like [MASK] learning."  
Target: "deep"

тЬЕ C. Autoencoding

Input рд╕реЗ рдЦреБрдж рдХреЛ reconstruct рдХрд░рдирд╛

  • Example: Autoencoders, Variational Autoencoders

тЬЕ D. Predict Context (Next Frame, Next Word, etc.)

  • Next Word Prediction: GPT рдЬреИрд╕реЗ models
  • Next Frame Prediction: Video prediction tasks

ЁЯФ╖ 5. Examples of SSL in Practice

Model / MethodDomainTechnique
BERTNLPMasked token prediction
SimCLRVisionContrastive loss
BYOL, MoCoVisionMomentum encoder
GPTNLPNext token prediction
MAE (Masked Autoencoders)VisionMask patches, reconstruct

ЁЯФ╢ 6. Advantages of Self-Supervised Learning

тЬЕ Manual labels рдХреА dependency рдирд╣реАрдВ
тЬЕ Large-scale data рд╕реЗ рдмреЗрд╣рддрд░ generalization
тЬЕ Transfer learning рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░реАрди
тЬЕ Few-shot рдпрд╛ Zero-shot tasks рдореЗрдВ useful


ЁЯФ╢ 7. Self-Supervised vs Unsupervised vs Supervised

MethodLabels RequiredExample
SupervisedтЬЕ YesClassification, Regression
UnsupervisedтЭМ NoClustering, PCA
Self-SupervisedтЭМ PseudoBERT, SimCLR, GPT

ЁЯзк Use Case: SimCLR in Vision (PyTorch)

import torchvision.transforms as T
from PIL import Image

transform = T.Compose([
T.RandomResizedCrop(224),
T.RandomHorizontalFlip(),
T.ColorJitter(),
T.ToTensor()
])

img = Image.open("cat.jpg")
x1 = transform(img) # View 1
x2 = transform(img) # View 2

# Pass x1, x2 to encoder тЖТ project тЖТ NT-Xent loss

ЁЯУЭ Practice Questions

  1. Self-Supervised learning рдореЗрдВ labels рдХреИрд╕реЗ generate рд╣реЛрддреЗ рд╣реИрдВ?
  2. Contrastive Learning рдФрд░ Masked Modeling рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. SimCLR рдХрд┐рд╕ domain рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ?
  4. GPT рдФрд░ BERT рдореЗрдВ SSL рдХрд╛ role рдХреНрдпрд╛ рд╣реИ?
  5. SSL рдХреЗ рдлрд╛рдпрджреЗ рдХреНрдпрд╛ рд╣реИрдВ supervised learning рдХреЗ comparison рдореЗрдВ?

ЁЯФЪ Summary

ConceptDetail
SSL DefinitionData рд╕реЗ рдЦреБрдж labels generate рдХрд░рдХреЗ learning
Famous TasksMasking, Contrastive, Autoencoding
Popular ModelsBERT, GPT, SimCLR, BYOL, MAE
AdvantageLabel-free pretraining, Generalization
Real UseNLP, Vision, Robotics, Video

Serving Deep Learning Models via API / Web App

model рдХреЛ train рдФрд░ save рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ тАФ рдЕрдм рдмрд╛рд░реА рд╣реИ рдЙрд╕реЗ рджреБрдирд┐рдпрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА ЁЯОп
рдпрд╛рдирд┐ model рдХреЛ API рдпрд╛ Web App рдХреЗ рдЬрд╝рд░рд┐рдП serve рдХрд░рдирд╛ред


ЁЯзй рджреЛ рдореБрдЦреНрдп рддрд░реАрдХреЗрдВ:

рддрд░реАрдХрд╛рд╡рд┐рд╡рд░рдгрдЙрджрд╛рд╣рд░рдг
тЬЕ API-BasedModel рдХреЛ backend рдореЗрдВ serve рдХрд░реЗрдВFlask / FastAPI
тЬЕ Web AppModel рдХреЗ рдКрдкрд░ UI рдмрдирд╛рдПрдВStreamlit / Gradio

ЁЯФ╢ 1. тЬЕ Flask API рд╕реЗ Model Serve рдХрд░рдирд╛ (PyTorch Example)

ЁЯЫая╕П Step-by-step Code

ЁЯУМ app.py:

from flask import Flask, request, jsonify
import torch
import torch.nn as nn

# Your trained model class
class MyNet(nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.fc1 = nn.Linear(2, 4)
self.fc2 = nn.Linear(4, 1)

def forward(self, x):
x = torch.relu(self.fc1(x))
return torch.sigmoid(self.fc2(x))

# Load model
model = MyNet()
model.load_state_dict(torch.load("model_weights.pth"))
model.eval()

# Create Flask app
app = Flask(__name__)

@app.route('/predict', methods=['POST'])
def predict():
data = request.get_json()
input_tensor = torch.tensor(data["input"]).float()
with torch.no_grad():
output = model(input_tensor).item()
return jsonify({"prediction": round(output)})

if __name__ == "__main__":
app.run(debug=True)

ЁЯУ▓ Test via curl or Postman:

curl -X POST http://127.0.0.1:5000/predict \
-H "Content-Type: application/json" \
-d '{"input": [1.0, 0.0]}'

ЁЯФ╢ 2. тЬЕ Streamlit Web App (Quick & Visual)

ЁЯУМ app.py

import streamlit as st
import torch
import torch.nn as nn

# Load model
class MyNet(nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.fc1 = nn.Linear(2, 4)
self.fc2 = nn.Linear(4, 1)

def forward(self, x):
x = torch.relu(self.fc1(x))
return torch.sigmoid(self.fc2(x))

model = MyNet()
model.load_state_dict(torch.load("model_weights.pth"))
model.eval()

# UI
st.title("XOR Prediction Model")
x1 = st.slider("x1", 0.0, 1.0, 0.0)
x2 = st.slider("x2", 0.0, 1.0, 0.0)

if st.button("Predict"):
input_tensor = torch.tensor([[x1, x2]])
with torch.no_grad():
output = model(input_tensor).item()
st.write("Prediction:", round(output))

ЁЯФ╝ Run the App:

streamlit run app.py

ЁЯФ╢ 3. тЬЕ Gradio Web Interface

import gradio as gr
import torch
import torch.nn as nn

class MyNet(nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.fc1 = nn.Linear(2, 4)
self.fc2 = nn.Linear(4, 1)

def forward(self, x):
x = torch.relu(self.fc1(x))
return torch.sigmoid(self.fc2(x))

model = MyNet()
model.load_state_dict(torch.load("model_weights.pth"))
model.eval()

def predict(x1, x2):
input_tensor = torch.tensor([[x1, x2]])
with torch.no_grad():
output = model(input_tensor).item()
return round(output)

gr.Interface(fn=predict, inputs=["slider", "slider"], outputs="text").launch()

тЬЕ Deployment Options:

PlatformToolSuitable For
Local MachineFlask / StreamlitTesting, demos
Heroku / RenderFlask + GunicornCloud API
Hugging FaceGradio SpacePublic demo
AWS/GCPDocker / APIProduction

ЁЯУЭ Practice Questions:

  1. Flask API рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реЗ steps follow рд╣реЛрддреЗ рд╣реИрдВ?
  2. Streamlit рдФрд░ Gradio рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. Model рдХреЛ Web рдкрд░ serve рдХрд░рдиреЗ рдХреЗ 3 рддрд░реАрдХреЗ рдХреНрдпрд╛ рд╣реИрдВ?
  4. TorchScript model рдХреЛ Flask рдореЗрдВ рдХреИрд╕реЗ load рдХрд░реЗрдВрдЧреЗ?
  5. curl рд╕реЗ API call рдХреИрд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ?

ЁЯза Summary Table

MethodInterfaceSetup TimeUI
FlaskJSON APIMediumтЭМ
StreamlitWeb UIVery LowтЬЕ
GradioWeb UIVery LowтЬЕ
FastAPIFast JSONMedium-HighтЭМ

Saving & Exporting Deep Learning Models

Model рдХреЛ train рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реЗ save рдХрд░рдирд╛ рдЬрд╝рд░реВрд░реА рд╣реЛрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрд╕реЗ:

  • Future рдореЗрдВ reuse рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
  • Production рдореЗрдВ deploy рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ
  • рдХрд┐рд╕реА рдФрд░ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдкрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ (e.g., mobile, web, edge devices)

ЁЯФ╖ ЁЯФ╣ Why Save Models?

ReasonBenefit
Training time рдмрдЪрд╛рдирд╛рдмрд╛рд░-рдмрд╛рд░ retrain рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ
Deployment possibleWeb, mobile, or production рдореЗрдВ model use
Sharing & ReuseрджреВрд╕рд░реЛрдВ рд╕реЗ share рдХрд░рдирд╛ рдпрд╛ reuse рдХрд░рдирд╛

ЁЯФ╢ 1. PyTorch рдореЗрдВ Model Saving & Loading

тЬЕ 1.1 Only Weights Save рдХрд░реЗрдВ

torch.save(model.state_dict(), "model_weights.pth")

ЁЯФБ Load Only Weights

model = MyNet()  # same structure
model.load_state_dict(torch.load("model_weights.pth"))
model.eval()

тЬЕ 1.2 Save Full Model (Structure + Weights)

torch.save(model, "full_model.pth")

ЁЯФБ Load Full Model

model = torch.load("full_model.pth")
model.eval()

тЪая╕П Recommended method: save state_dict() instead of full model, for more flexibility and safety.


тЬЕ 1.3 Export for Production (TorchScript)

example_input = torch.randn(1, 2)
traced = torch.jit.trace(model, example_input)
traced.save("model_scripted.pt")

ЁЯФБ Load TorchScript Model

model = torch.jit.load("model_scripted.pt")
model.eval()

ЁЯФ╢ 2. TensorFlow / Keras рдореЗрдВ Model Saving

тЬЕ 2.1 Save Entire Model (.h5 or .keras)

model.save("my_model.h5")
# OR
model.save("my_model.keras") # Recommended in latest TF

ЁЯФБ Load:

from tensorflow.keras.models import load_model
model = load_model("my_model.h5")

тЬЕ 2.2 Save Weights Only

model.save_weights("weights.h5")

ЁЯФБ Load Weights:

model = build_model()  # Define same structure
model.load_weights("weights.h5")

тЬЕ 2.3 Export to TensorFlow Lite (for Mobile/IoT)

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
f.write(tflite_model)

тЬЕ 2.4 Export to TF.js (Browser Use)

pip install tensorflowjs
tensorflowjs_converter --input_format keras my_model.h5 web_model/

ЁЯУЭ Practice Questions:

  1. PyTorch рдореЗрдВ state_dict рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдХреНрдпреЛрдВ рдЬрд╝рд░реВрд░реА рд╣реИ?
  2. Keras рдореЗрдВ .h5 рдФрд░ .keras рдореЗрдВ рдХреНрдпрд╛ рдЕрдВрддрд░ рд╣реИ?
  3. TorchScript рдФрд░ ONNX рдореЗрдВ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд╣реИ?
  4. TensorFlow Lite рдХреНрдпреЛрдВ рдФрд░ рдХрдм use рдХрд░рддреЗ рд╣реИрдВ?
  5. Model рдХреЛ JSON рдпрд╛ TF.js рдореЗрдВ рдХреИрд╕реЗ export рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?

ЁЯФЪ Summary Table

FrameworkSave WeightsSave Full ModelExport Option
PyTorchstate_dict()torch.save()TorchScript / ONNX
Kerassave_weights()model.save()TF Lite, TF.js
TensorFlowcheckpointSavedModel formatTensorFlow Serving