Exp 9 — Transfer learning (MobileNetV2)

Record-ready template Fill placeholders with your dataset, code, outputs, plots, and viva.
AIML355 • Fundamentals of Deep Learning Lab

EXP09 — Transfer Learning with MobileNetV2

Record-ready template Replace placeholders with your final work (code + outputs + screenshots).
Submission checklist
Aim ✓ • Environment ✓ • Dataset ✓ • Procedure ✓ • Code ✓ • Output ✓ • Discussion ✓ • Viva ✓

1) Aim

To implement transfer learning using a pre-trained MobileNetV2 for image classification in Python.

Learning outcomes
  • Use MobileNetV2 as feature extractor and train a custom classifier head.
  • Apply data augmentation and fine-tune selectively.
  • Report accuracy + confusion matrix and training curves.

2) Requirements / Environment

Software
  • Python 3.10+ (recommended)
  • TensorFlow/Keras (or PyTorch where applicable)
  • NumPy, Pandas, Matplotlib
  • Jupyter/Colab optional
Hardware
  • CPU is OK for small runs; GPU optional
  • RAM: 4–8 GB+ recommended
Reproducibility
Record library versions and random seed in your final report.

3) Dataset

  • Source: Use a relevant dataset and cite the source in your report.
  • Features/Labels: [Describe X and y; mention classes if classification]
  • Split: [Train/Validation/Test or K-fold]
  • Preprocessing: [Scaling/Normalization, resizing, tokenization, etc.]

4) Procedure / Steps

  1. Load dataset and perform preprocessing.
  2. Define model architecture and justify key choices.
  3. Compile model (loss + optimizer + metrics).
  4. Train with validation and log curves.
  5. Evaluate on test set and compute required metrics.
  6. Summarize observations and limitations.
Model hint
MobileNetV2 base + GlobalAveragePooling + Dense classifier head.

5) Code (Skeleton)

Paste your complete runnable code below (or attach notebook link in the final submission).

import tensorflow as tf
from tensorflow import keras

base = keras.applications.MobileNetV2(input_shape=(IMG,IMG,3), include_top=False, weights='imagenet')
base.trainable = False

inputs = keras.Input(shape=(IMG,IMG,3))
x = keras.applications.mobilenet_v2.preprocess_input(inputs)
x = base(x, training=False)
x = keras.layers.GlobalAveragePooling2D()(x)
x = keras.layers.Dropout(0.2)(x)
outputs = keras.layers.Dense(NUM_CLASSES, activation='softmax')(x)
model = keras.Model(inputs, outputs)
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

6) Results / Output

  • Metrics: [Write your final values: accuracy/F1 or MAE/MSE]
  • Plots: [Attach loss/metric curves; prediction vs actual plots if forecasting]
  • Screenshots: [Paste screenshots of outputs, confusion matrix, sample predictions]

7) Observations / Discussion

  • [Observation 1: what changed when you tuned epochs/batch size?]
  • [Observation 2: evidence of overfitting/underfitting?]
  • [Observation 3: what improved performance (augmentation, regularization, fine-tuning)?]

8) Conclusion

Write 3–6 lines summarizing what you implemented, key result, and what you learned.

9) Viva Questions

  1. What is transfer learning?
  2. What does 'fine-tuning' mean?
  3. What is the difference between training and validation data?
  4. Explain overfitting and two ways to reduce it.
  5. Why do we normalize/scale inputs?
  6. What does batch size and epoch mean?
  7. How do you choose a loss function for a task?

10) Post-lab Assignment

  • Unfreeze last block and fine-tune with low LR.
  • Compare MobileNetV2 with EfficientNetB0.
Tip: press Esc to close.