Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is a pre-trained model in torchvision?
A pre-trained model in torchvision is a neural network model that has already been trained on a large dataset like ImageNet. It can be used directly or fine-tuned for new tasks, saving time and resources.
Click to reveal answer
beginner
Name two popular pre-trained models available in torchvision.
Two popular pre-trained models in torchvision are ResNet (e.g., ResNet-50) and VGG (e.g., VGG-16). Both are widely used for image classification tasks.
Click to reveal answer
beginner
How do you load a pre-trained ResNet-18 model in PyTorch using torchvision?
You can load it with: <pre>import torchvision.models as models
model = models.resnet18(weights=models.ResNet18_Weights.DEFAULT)</pre> This downloads the weights trained on ImageNet.
Click to reveal answer
intermediate
Why might you want to fine-tune a pre-trained model instead of training from scratch?
Fine-tuning uses the learned features from a large dataset and adapts them to your specific task. It requires less data and training time, and often improves performance on small datasets.
Click to reveal answer
beginner
What is the role of the pretrained=True argument when loading models in torchvision?
The pretrained=True argument tells torchvision to load the model with weights trained on a large dataset (usually ImageNet). Without it, the model has random weights.
Click to reveal answer
What dataset are torchvision pre-trained models commonly trained on?
ACIFAR-10
BImageNet
CMNIST
DCOCO
✗ Incorrect
Most torchvision pre-trained models are trained on ImageNet, a large dataset with millions of labeled images.
Which of the following is NOT a torchvision pre-trained model?
ABERT
BVGG
CResNet
DAlexNet
✗ Incorrect
BERT is a language model, not an image model, so it is not part of torchvision pre-trained models.
What does setting pretrained=True do when loading a model?
ALoads random weights
BChanges model architecture
CLoads weights trained on a large dataset
DDisables training
✗ Incorrect
It loads the model with weights trained on a large dataset like ImageNet.
Why is fine-tuning useful?
AIt increases model size
BIt trains a model from scratch
CIt removes all pre-trained weights
DIt uses learned features to adapt to new tasks quickly
✗ Incorrect
Fine-tuning adapts pre-trained features to new tasks, saving time and improving performance.
Which PyTorch module provides access to pre-trained models?
Atorchvision.models
Btorch.nn
Ctorch.optim
Dtorch.utils.data
✗ Incorrect
The torchvision.models module contains pre-trained models for computer vision.
Explain what a torchvision pre-trained model is and why it is useful.
Think about how using a model trained on many images helps with new tasks.
You got /4 concepts.
Describe the steps to load and use a pre-trained ResNet model in PyTorch.
Focus on the code and what pretrained=True means.
You got /3 concepts.
Practice
(1/5)
1. What is the main advantage of using torchvision pre-trained models?
easy
A. They automatically improve your dataset quality.
B. They generate new images from text descriptions.
C. They reduce the size of your images.
D. They allow you to use powerful image models without training from scratch.
Solution
Step 1: Understand what pre-trained models do
Pre-trained models are already trained on large datasets, so you don't need to train them from zero.
Step 2: Identify the main benefit
This saves time and resources, letting you use powerful models quickly.
Final Answer:
They allow you to use powerful image models without training from scratch. -> Option D
Quick Check:
Pre-trained models = reuse trained weights [OK]
Hint: Pre-trained means ready to use without full training [OK]
Common Mistakes:
Thinking pre-trained models improve data quality
Confusing pre-trained models with image resizing
Believing they generate images from text
2. Which of the following is the correct way to load a pre-trained ResNet18 model from torchvision?
easy
A. model = torchvision.models.resnet18(weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1)
B. model = torchvision.resnet18(pretrained=True)
C. model = torchvision.models.resnet18(pretrained=False)
D. model = torchvision.models.load_resnet18(pretrained=True)
Solution
Step 1: Recall the updated torchvision syntax
Since torchvision 0.13+, pre-trained weights are loaded using the 'weights' argument with a weights enum, not 'pretrained=True'.
Step 2: Identify the correct syntax for ResNet18
Use torchvision.models.resnet18(weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1).
Final Answer:
model = torchvision.models.resnet18(weights=torchvision.models.ResNet18_Weights.IMAGENET1K_V1) -> Option A
Quick Check:
Use weights=enum, not pretrained=True [OK]
Hint: Use weights= argument, not pretrained=True [OK]
Common Mistakes:
Using pretrained=False which doesn't load pre-trained weights
Calling torchvision.resnet18 directly
Using a non-existent load_resnet18 function
3. What will be the output shape of the following code snippet using a pre-trained ResNet18 model on a batch of 8 RGB images of size 224x224?
import torch
import torchvision.models as models
model = models.resnet18(weights=models.ResNet18_Weights.IMAGENET1K_V1)
model.eval()
inputs = torch.randn(8, 3, 224, 224)
outputs = model(inputs)
print(outputs.shape)
medium
A. torch.Size([8, 3, 224, 224])
B. torch.Size([8, 1000])
C. torch.Size([8, 512])
D. torch.Size([1, 1000])
Solution
Step 1: Understand ResNet18 output size
ResNet18 pre-trained on ImageNet outputs logits for 1000 classes, so output shape is (batch_size, 1000).
Step 2: Check input batch size and output shape
Input batch size is 8, so output shape is (8, 1000).
A. Input tensor shape should be (3, 224, 224) without batch dimension.
B. You need to set weights=None to use pre-trained weights.
C. You forgot to call model.eval() before prediction.
D. You must convert inputs to numpy arrays before passing to model.
Solution
Step 1: Check model mode for prediction
Pre-trained models must be set to evaluation mode with model.eval() to disable dropout and batch norm updates.
Step 2: Identify the missing step
The code misses model.eval(), so outputs may be incorrect or inconsistent.
Final Answer:
You forgot to call model.eval() before prediction. -> Option C
Quick Check:
Set model.eval() before inference [OK]
Hint: Always call model.eval() before predicting [OK]
Common Mistakes:
Not calling model.eval() before inference
Wrong input tensor shape without batch
Trying to convert tensors to numpy before model
5. You want to fine-tune a pre-trained ResNet18 model on your own 5-class dataset. Which of the following code snippets correctly replaces the final layer for this task?
hard
A. model.fc = torch.nn.Linear(in_features=512, out_features=5)
B. model.classifier = torch.nn.Linear(in_features=1000, out_features=5)
C. model.fc = torch.nn.Linear(in_features=2048, out_features=5)
D. model.output = torch.nn.Linear(in_features=512, out_features=1000)
Solution
Step 1: Identify the final layer of ResNet18
ResNet18's final fully connected layer is model.fc with input features 512 and output 1000 classes.
Step 2: Replace final layer for 5 classes
To fine-tune, replace model.fc with a new Linear layer with 512 inputs and 5 outputs.
Final Answer:
model.fc = torch.nn.Linear(in_features=512, out_features=5) -> Option A
Quick Check:
Replace model.fc with correct output size [OK]
Hint: Replace model.fc with Linear(512, number_of_classes) [OK]
Common Mistakes:
Replacing wrong attribute like model.classifier
Using wrong input feature size (2048 instead of 512)