Bird
Raised Fist0
Computer Visionml~20 mins

Autoencoder for images in Computer Vision - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Autoencoder Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Model Choice
intermediate
2:00remaining
Choosing the right architecture for an image autoencoder

You want to build an autoencoder to compress and reconstruct 28x28 grayscale images. Which model architecture is best suited for this task?

AA convolutional neural network with convolutional layers followed by a bottleneck and deconvolutional layers
BA fully connected neural network with input size 784 and a bottleneck layer of size 32
CA recurrent neural network with LSTM layers to process the image pixels sequentially
DA decision tree model trained to predict pixel values from other pixels
Attempts:
2 left
💡 Hint

Think about which model type can capture spatial patterns in images effectively.

❓ Predict Output
intermediate
2:00remaining
Output shape after encoding in a convolutional autoencoder

Given the following encoder code for 28x28 grayscale images, what is the shape of the encoded output?

Computer Vision
import torch
import torch.nn as nn

class Encoder(nn.Module):
    def __init__(self):
        super().__init__()
        self.conv1 = nn.Conv2d(1, 16, 3, stride=2, padding=1)  # output: 16 x 14 x 14
        self.conv2 = nn.Conv2d(16, 8, 3, stride=2, padding=1)  # output: 8 x 7 x 7
    def forward(self, x):
        x = torch.relu(self.conv1(x))
        x = torch.relu(self.conv2(x))
        return x

encoder = Encoder()
input_tensor = torch.randn(1, 1, 28, 28)
encoded = encoder(input_tensor)
print(encoded.shape)
Atorch.Size([1, 16, 14, 14])
Btorch.Size([1, 8, 7, 7])
Ctorch.Size([1, 8, 14, 14])
Dtorch.Size([1, 1, 28, 28])
Attempts:
2 left
💡 Hint

Calculate output size after each convolution using stride and padding.

❓ Hyperparameter
advanced
2:00remaining
Choosing the right latent dimension size in an autoencoder

You are training an autoencoder on 64x64 RGB images. What is the effect of choosing a very small latent dimension size?

AThe model will compress images too much, causing blurry or poor reconstructions
BThe model will overfit and memorize training images exactly
CThe model will run faster but use more memory
DThe model will reconstruct images perfectly with no loss
Attempts:
2 left
💡 Hint

Think about what happens if the compressed representation is too small to hold enough information.

❓ Metrics
advanced
2:00remaining
Evaluating autoencoder reconstruction quality

Which metric is best to measure how well an autoencoder reconstructs images?

AF1 score of reconstructed image pixels
BAccuracy of predicted class labels
CCross-entropy loss between input and output pixels
DMean Squared Error (MSE) between original and reconstructed images
Attempts:
2 left
💡 Hint

Consider a metric that measures pixel-wise difference between images.

🔧 Debug
expert
2:00remaining
Identifying the cause of poor autoencoder training

You trained an autoencoder on 32x32 grayscale images but the loss does not decrease and reconstructions are random noise. What is the most likely cause?

AThe batch size is too large causing slow convergence
BThe input images are not normalized before training
CThe learning rate is too high causing unstable training
DThe autoencoder has too many layers causing overfitting
Attempts:
2 left
💡 Hint

Think about what causes training loss to not improve and outputs to be random.

Practice

(1/5)
1. What is the main purpose of an autoencoder when applied to images?
easy
A. To generate new images from random noise
B. To classify images into categories
C. To compress and then reconstruct the image data
D. To detect edges using filters

Solution

  1. Step 1: Understand autoencoder function

    An autoencoder learns to compress input data into a smaller representation and then reconstruct it back.
  2. Step 2: Apply to images

    For images, this means compressing image pixels and reconstructing the image to learn important features.
  3. Final Answer:

    To compress and then reconstruct the image data -> Option C
  4. Quick Check:

    Autoencoder = compression + reconstruction [OK]
Hint: Autoencoder = compress + rebuild images [OK]
Common Mistakes:
  • Confusing autoencoder with classifier
  • Thinking autoencoder generates new images
  • Mixing edge detection with autoencoding
2. Which of the following is the correct way to define the encoder part of a convolutional autoencoder in Python using Keras?
easy
A. encoder = Sequential([LSTM(32, input_shape=(28,28,1))])
B. encoder = Sequential([Dense(32, activation='relu', input_shape=(28,28,1))])
C. encoder = Sequential([Conv1D(32, 3, activation='relu', input_shape=(28,28,1))])
D. encoder = Sequential([Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2))])

Solution

  1. Step 1: Identify convolutional layers for images

    Conv2D layers are used for 2D image data, with filters and kernel size.
  2. Step 2: Check correct syntax and input shape

    encoder = Sequential([Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2))]) uses Conv2D with activation and input shape for grayscale images (28x28x1), plus pooling for downsampling.
  3. Final Answer:

    encoder = Sequential([Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)), MaxPooling2D((2,2))]) -> Option D
  4. Quick Check:

    Conv2D + MaxPooling2D = convolutional encoder [OK]
Hint: Use Conv2D for images, not Dense or Conv1D [OK]
Common Mistakes:
  • Using Dense layer instead of Conv2D for images
  • Using Conv1D which is for sequences, not images
  • Using LSTM which is for sequences, not images
3. Given this simple convolutional autoencoder code snippet, what will be the shape of the encoded output?
from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D
from tensorflow.keras.models import Model
input_img = Input(shape=(28, 28, 1))
x = Conv2D(16, (3, 3), activation='relu', padding='same')(input_img)
x = MaxPooling2D((2, 2), padding='same')(x)
encoded = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
model = Model(input_img, encoded)
medium
A. (14, 14, 8)
B. (28, 28, 8)
C. (7, 7, 8)
D. (14, 14, 16)

Solution

  1. Step 1: Analyze input and first Conv2D layer

    Input shape is (28,28,1). First Conv2D with padding='same' keeps spatial size (28,28), output channels 16.
  2. Step 2: Apply MaxPooling2D with pool size (2,2) and padding='same'

    This halves spatial dimensions: (28,28) -> (14,14), channels remain 16.
  3. Step 3: Apply second Conv2D with 8 filters and padding='same'

    Spatial size stays (14,14), channels become 8.
  4. Final Answer:

    (14, 14, 8) -> Option A
  5. Quick Check:

    Pooling halves size, Conv2D changes channels [OK]
Hint: Pooling halves size, Conv2D changes channels [OK]
Common Mistakes:
  • Ignoring padding='same' effect on size
  • Assuming Conv2D changes spatial size
  • Confusing channels with spatial dimensions
4. You wrote this decoder code for your convolutional autoencoder but get an error during training:
decoder = Sequential([
  Conv2D(8, (3,3), activation='relu', padding='same', input_shape=(14,14,16)),
  UpSampling2D((2,2)),
  Conv2D(1, (3,3), activation='sigmoid', padding='same')
])
What is the likely cause of the error?
medium
A. Missing UpSampling2D layer before the last Conv2D
B. Input shape to decoder does not match encoded output shape
C. Activation 'sigmoid' is not allowed in Conv2D
D. Conv2D filters must be 16, not 8 or 1

Solution

  1. Step 1: Check encoded output shape

    The encoder output shape is (14,14,8) after the final Conv2D layer, but decoder input shape=(14,14,16).
  2. Step 2: Verify decoder input shape matches encoded output

    Decoder input_shape=(14,14,16) does not match encoded output (14,14,8), causing shape mismatch in channels during training.
  3. Step 3: Identify common error cause

    Often error arises if decoder input shape does not match encoder output shape exactly, causing shape mismatch during training.
  4. Final Answer:

    Input shape to decoder does not match encoded output shape -> Option B
  5. Quick Check:

    Decoder input shape must match encoder output [OK]
Hint: Decoder input shape must match encoder output shape [OK]
Common Mistakes:
  • Thinking activation 'sigmoid' is invalid
  • Assuming filters must be 16 always
  • Ignoring input shape mismatch errors
5. You want to use a convolutional autoencoder to remove noise from grayscale images of size 64x64. Which architecture choice is best to preserve spatial details while reducing noise?
hard
A. Use multiple Conv2D layers with small (3x3) kernels and padding='same', plus MaxPooling2D for downsampling
B. Use Dense layers only to compress the flattened image vector
C. Use Conv1D layers with large kernels to capture noise patterns
D. Use a single Conv2D layer without pooling or upsampling

Solution

  1. Step 1: Understand noise removal with autoencoders

    Noise removal requires learning spatial features and reconstructing clean images, so preserving spatial info is key.
  2. Step 2: Evaluate architecture choices

    Multiple Conv2D layers with small kernels and padding='same' keep spatial size and details; MaxPooling2D reduces size to learn compressed features.
  3. Step 3: Reject other options

    Dense layers lose spatial info; Conv1D is for sequences; single Conv2D without pooling won't compress well.
  4. Final Answer:

    Use multiple Conv2D layers with small (3x3) kernels and padding='same', plus MaxPooling2D for downsampling -> Option A
  5. Quick Check:

    Conv2D + pooling preserves spatial details for denoising [OK]
Hint: Use Conv2D + pooling to keep spatial info and reduce noise [OK]
Common Mistakes:
  • Using Dense layers losing image structure
  • Using Conv1D which is for 1D data
  • Skipping pooling reduces compression ability
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard