Bird
Raised Fist0
PyTorchml~20 mins

Kernel size, stride, padding in PyTorch - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
🎖️
Convolution Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output shape after convolution with stride and padding
Given a 1-channel input tensor of shape (1, 1, 10, 10), a convolutional layer with kernel size 3, stride 2, and padding 1 is applied. What is the shape of the output tensor?
PyTorch
import torch
import torch.nn as nn

input_tensor = torch.randn(1, 1, 10, 10)
conv = nn.Conv2d(in_channels=1, out_channels=1, kernel_size=3, stride=2, padding=1)
output = conv(input_tensor)
output.shape
A(1, 1, 6, 6)
B(1, 1, 4, 4)
C(1, 1, 7, 7)
D(1, 1, 5, 5)
Attempts:
2 left
💡 Hint
Recall the formula for output size: floor((input + 2*padding - kernel_size)/stride) + 1
🧠 Conceptual
intermediate
1:30remaining
Effect of stride on convolution output size
Which statement correctly describes the effect of increasing the stride in a convolutional layer?
AIncreasing stride has no effect on output spatial dimensions.
BIncreasing stride increases the output spatial dimensions.
CIncreasing stride decreases the output spatial dimensions.
DIncreasing stride increases the number of output channels.
Attempts:
2 left
💡 Hint
Think about how stride controls the step size when sliding the kernel.
Metrics
advanced
2:00remaining
Padding effect on output size with kernel size 5
A convolutional layer uses kernel size 5 and stride 1 on an input of size 28x28. Which padding value will keep the output size the same as the input size?
APadding = 2
BPadding = 1
CPadding = 0
DPadding = 3
Attempts:
2 left
💡 Hint
Use the formula: output = floor((input + 2*padding - kernel_size)/stride) + 1
🔧 Debug
advanced
1:30remaining
Identify the error in convolution output size calculation
A user calculates the output size of a convolution as output = (input_size - kernel_size + 2*padding) / stride + 1 without flooring the division. What problem can this cause?
AOutput size will always be larger than input size.
BOutput size may be a float, which is invalid for tensor dimensions.
CPadding will be ignored during convolution.
DStride will be treated as 1 regardless of value.
Attempts:
2 left
💡 Hint
Tensor shapes must be integers.
Model Choice
expert
2:30remaining
Choosing padding and stride for specific output size
You want a convolutional layer with kernel size 4 on a 32x32 input to produce an output of size 15x15. Which combination of stride and padding achieves this?
AStride = 2, Padding = 0
BStride = 3, Padding = 0
CStride = 1, Padding = 1
DStride = 2, Padding = 1
Attempts:
2 left
💡 Hint
Use output size formula and solve for stride and padding.

Practice

(1/5)
1. What does the stride parameter control in a convolutional layer in PyTorch?
easy
A. How far the filter moves on the input each step
B. The size of the filter scanning the input
C. The number of filters used in the layer
D. The amount of zero padding added around the input

Solution

  1. Step 1: Understand stride in convolution

    Stride defines the step size the filter moves when scanning the input image or feature map.
  2. Step 2: Differentiate stride from other parameters

    Kernel size is the filter size, padding adds pixels around input, and number of filters controls output depth.
  3. Final Answer:

    How far the filter moves on the input each step -> Option A
  4. Quick Check:

    Stride = step size of filter movement [OK]
Hint: Stride = filter step size, not size or padding [OK]
Common Mistakes:
  • Confusing stride with kernel size
  • Thinking stride controls padding
  • Mixing stride with number of filters
2. Which of the following is the correct way to create a 2D convolutional layer in PyTorch with kernel size 3, stride 2, and padding 1?
easy
A. nn.Conv2d(in_channels=1, out_channels=10, kernel_size=3, stride=2, padding=1)
B. nn.Conv2d(1, 10, kernel=3, stride=2, pad=1)
C. nn.Conv2d(1, 10, kernel_size=3, stride=1, padding=2)
D. nn.Conv2d(in_channels=1, out_channels=10, kernel_size=2, stride=2, padding=1)

Solution

  1. Step 1: Check PyTorch Conv2d parameter names

    Correct parameters are in_channels, out_channels, kernel_size, stride, and padding.
  2. Step 2: Match values to question

    Kernel size=3, stride=2, padding=1 matches only nn.Conv2d(in_channels=1, out_channels=10, kernel_size=3, stride=2, padding=1) exactly.
  3. Final Answer:

    nn.Conv2d(in_channels=1, out_channels=10, kernel_size=3, stride=2, padding=1) -> Option A
  4. Quick Check:

    Correct parameter names and values used [OK]
Hint: Use exact PyTorch parameter names: kernel_size, stride, padding [OK]
Common Mistakes:
  • Using wrong parameter names like kernel or pad
  • Mixing stride and padding values
  • Wrong kernel size or stride values
3. Given an input tensor of size (1, 1, 7, 7), a Conv2d layer with kernel_size=3, stride=2, and padding=1 is applied. What is the output spatial size (height and width)?
medium
A. (1, 1, 3, 3)
B. (1, 1, 5, 5)
C. (1, 1, 2, 2)
D. (1, 1, 4, 4)

Solution

  1. Step 1: Use output size formula for Conv2d

    Output size = floor((Input + 2*padding - kernel_size)/stride) + 1
  2. Step 2: Calculate output height and width

    Input=7, padding=1, kernel=3, stride=2
    Output = floor((7 + 2*1 - 3)/2) + 1 = floor((7 + 2 - 3)/2) + 1 = floor(6/2) + 1 = 3 + 1 = 4
  3. Final Answer:

    (1, 1, 4, 4) -> Option D
  4. Quick Check:

    Output size formula applied correctly [OK]
Hint: Apply formula: floor((I+2P-K)/S)+1 for each dimension [OK]
Common Mistakes:
  • Forgetting to add padding twice
  • Using ceil instead of floor
  • Mixing stride and kernel size in formula
4. You wrote this PyTorch code but get an error:
nn.Conv2d(1, 10, kernel_size=3, stride=2, padding=0)
on input size (1, 1, 1, 1). What is the likely cause?
medium
A. Kernel size must be even number
B. Padding is too small for the input size causing negative output dimension
C. Stride value must be 1 for kernel size 3
D. Input channels and output channels are swapped

Solution

  1. Step 1: Check output size with given parameters

    Output size = floor((1 + 2*0 - 3)/2) + 1 = floor((-2)/2) + 1 = floor(-1) + 1 = -1 + 1 = 0 (invalid)
  2. Step 2: Consider if padding causes error

    Padding=0 on small input (1x1) causes the calculated output size to be zero, which PyTorch raises as a runtime error due to insufficient padding for the kernel size.
  3. Final Answer:

    Padding is too small for the input size causing negative output dimension -> Option B
  4. Quick Check:

    Padding too small -> invalid output size [OK]
Hint: Check if padding is too small for input size [OK]
Common Mistakes:
  • Assuming stride must be 1 for kernel 3
  • Thinking kernel size must be even
  • Swapping input and output channels
5. You want to keep the output size the same as the input size (7x7) after a Conv2d layer with kernel_size=5 and stride=1. What padding value should you use?
hard
A. 1
B. 0
C. 2
D. 3

Solution

  1. Step 1: Use formula for output size with stride=1

    Output size = Input size if padding = (kernel_size - 1) / 2
  2. Step 2: Calculate padding

    Padding = (5 - 1) / 2 = 4 / 2 = 2
  3. Final Answer:

    2 -> Option C
  4. Quick Check:

    Padding = (kernel_size - 1)/2 keeps size same [OK]
Hint: Padding = (kernel_size - 1) / 2 for same size with stride 1 [OK]
Common Mistakes:
  • Using padding 0 or 1 incorrectly
  • Forgetting stride must be 1 for same size
  • Using padding larger than needed