Bird
Raised Fist0
PyTorchml~5 mins

nn.Conv2d layers in PyTorch - Cheat Sheet & Quick Revision

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
Recall & Review
beginner
What does nn.Conv2d layer do in a neural network?
It applies a set of filters (kernels) to 2D input data (like images) to extract features such as edges or textures by sliding the filters over the input.
Click to reveal answer
beginner
What are the main parameters of nn.Conv2d?
The main parameters are: in_channels (input depth), out_channels (number of filters), kernel_size (filter size), stride (step size for sliding), padding (border added), and dilation (spacing inside the kernel).
Click to reveal answer
intermediate
How does padding affect the output size of nn.Conv2d?
Padding adds pixels around the input edges, allowing the filter to cover border areas. This can keep the output size the same as input or control shrinking.
Click to reveal answer
intermediate
What is the effect of stride in nn.Conv2d?
Stride controls how far the filter moves each step. A stride of 1 moves one pixel at a time, producing larger outputs. Larger strides skip pixels, reducing output size.
Click to reveal answer
beginner
Why do we use multiple filters (out_channels) in nn.Conv2d?
Multiple filters let the network learn different features from the input, like edges, colors, or shapes, improving the model's ability to understand complex patterns.
Click to reveal answer
What does the kernel_size parameter in nn.Conv2d specify?
AThe number of filters used
BThe size of the filter applied to the input
CThe step size of the filter movement
DThe amount of padding added
If stride is set to 2 in nn.Conv2d, what happens to the output size compared to stride 1?
AOutput size becomes zero
BOutput size doubles
COutput size stays the same
DOutput size halves approximately
What is the role of padding in nn.Conv2d?
ATo add borders so output size can be controlled
BTo speed up training
CTo change the input channels
DTo increase the number of filters
What does out_channels parameter control in nn.Conv2d?
ANumber of filters applied
BNumber of input channels
CSize of the input image
DStride length
Which of these is NOT a typical use of nn.Conv2d?
AExtracting image features
BReducing image size
CClassifying text documents directly
DDetecting edges in images
Explain how the parameters kernel_size, stride, and padding affect the output size of an nn.Conv2d layer.
Think about how the filter moves and covers the input image.
You got /4 concepts.
    Describe why multiple filters (out_channels) are used in nn.Conv2d and how they help the model learn.
    Imagine looking at an image with different colored glasses to see different details.
    You got /4 concepts.

      Practice

      (1/5)
      1. What does the nn.Conv2d layer in PyTorch primarily do?
      easy
      A. It increases the image size by adding pixels.
      B. It slides filters over images to find patterns.
      C. It converts images to grayscale.
      D. It sorts images by color intensity.

      Solution

      1. Step 1: Understand the role of convolution layers

        Convolution layers slide small filters over input images to detect features like edges or textures.
      2. Step 2: Match the function to the options

        Only It slides filters over images to find patterns. correctly describes this sliding filter action, while others describe unrelated image operations.
      3. Final Answer:

        It slides filters over images to find patterns. -> Option B
      4. Quick Check:

        Convolution = sliding filters [OK]
      Hint: Conv2d = sliding filters over images to find features [OK]
      Common Mistakes:
      • Thinking Conv2d changes image size by adding pixels
      • Confusing Conv2d with image color adjustments
      • Assuming Conv2d sorts or rearranges pixels
      2. Which of the following is the correct way to create a Conv2d layer with 3 input channels, 16 output channels, and a 3x3 kernel in PyTorch?
      easy
      A. nn.Conv2d(3, 16, kernel_size=3)
      B. nn.Conv2d(16, 3, kernel_size=3)
      C. nn.Conv2d(3, 16, kernel=3)
      D. nn.Conv2d(input=3, output=16, size=3)

      Solution

      1. Step 1: Recall Conv2d constructor parameters

        The correct order is nn.Conv2d(in_channels, out_channels, kernel_size).
      2. Step 2: Check each option

        nn.Conv2d(3, 16, kernel_size=3) matches the correct parameter order and uses the correct keyword for kernel size. The other options have wrong parameter order or incorrect keywords.
      3. Final Answer:

        nn.Conv2d(3, 16, kernel_size=3) -> Option A
      4. Quick Check:

        Conv2d(in, out, kernel_size) = A [OK]
      Hint: Remember Conv2d(in_channels, out_channels, kernel_size) [OK]
      Common Mistakes:
      • Swapping input and output channels
      • Using wrong parameter names like 'kernel' instead of 'kernel_size'
      • Passing parameters as keywords not supported by Conv2d
      3. What will be the output shape of the following PyTorch Conv2d layer when applied to an input tensor of shape (1, 3, 32, 32)?
      conv = nn.Conv2d(3, 6, kernel_size=5)
      output = conv(torch.randn(1, 3, 32, 32))
      print(output.shape)
      medium
      A. torch.Size([1, 3, 28, 28])
      B. torch.Size([1, 6, 32, 32])
      C. torch.Size([6, 3, 28, 28])
      D. torch.Size([1, 6, 28, 28])

      Solution

      1. Step 1: Calculate output spatial size

        Output size = (Input size - Kernel size + 1) = (32 - 5 + 1) = 28 for both height and width.
      2. Step 2: Determine output channels and batch size

        Output channels = 6, batch size = 1, so output shape is (1, 6, 28, 28).
      3. Final Answer:

        torch.Size([1, 6, 28, 28]) -> Option D
      4. Quick Check:

        Output shape = (batch, out_channels, 28, 28) [OK]
      Hint: Output size = input - kernel + 1 if stride=1, padding=0 [OK]
      Common Mistakes:
      • Assuming output size equals input size without padding
      • Mixing up input and output channels in shape
      • Forgetting batch size dimension
      4. Identify the error in this Conv2d layer definition:
      conv = nn.Conv2d(3, 16, kernel_size=3, stride=2, padding=3)
      output = conv(torch.randn(1, 3, 28, 28))
      print(output.shape)
      medium
      A. Stride cannot be 2 in Conv2d.
      B. Input tensor shape is incorrect for 3 input channels.
      C. Padding is too large causing output size to increase unexpectedly.
      D. Kernel size must be an odd number.

      Solution

      1. Step 1: Calculate output size with given parameters

        Output size formula: floor((Input + 2*padding - kernel_size)/stride) + 1 = floor((28 + 6 - 3)/2) + 1 = floor(31/2) + 1 = 15 + 1 = 16.
      2. Step 2: Understand padding effect

        Padding=3 is large for kernel=3, causing output spatial size to increase unexpectedly, which is unusual and may cause unexpected behavior.
      3. Final Answer:

        Padding is too large causing output size to increase unexpectedly. -> Option C
      4. Quick Check:

        Large padding inflates output size [OK]
      Hint: Check padding size relative to kernel size for output shape [OK]
      Common Mistakes:
      • Thinking stride=2 is invalid
      • Assuming input shape is wrong for 3 channels
      • Believing kernel size must be odd always
      5. You want to design a Conv2d layer that keeps the input image size (28x28) unchanged after convolution with a 5x5 kernel and stride 1. Which padding value should you use?
      hard
      A. Padding = 2
      B. Padding = 1
      C. Padding = 0
      D. Padding = 3

      Solution

      1. Step 1: Use output size formula for Conv2d

        Output size = floor((Input + 2*padding - kernel_size)/stride) + 1. We want output = input = 28, stride=1, kernel=5.
      2. Step 2: Solve for padding

        28 = (28 + 2*padding - 5) + 1 -> 28 = 24 + 2*padding -> 2*padding = 4 -> padding = 2.
      3. Final Answer:

        Padding = 2 -> Option A
      4. Quick Check:

        Padding 2 keeps size with 5x5 kernel [OK]
      Hint: Padding = (kernel_size - 1) / 2 for same size [OK]
      Common Mistakes:
      • Using zero padding and expecting same size
      • Choosing padding less than 2 for 5x5 kernel
      • Confusing stride effect with padding