Bird
Raised Fist0
TensorFlowml~20 mins

Data augmentation in pipeline in TensorFlow - 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
🎖️
Data Augmentation Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of TensorFlow data augmentation pipeline
What is the shape of the output tensor after applying this augmentation pipeline to a batch of 32 images of size 64x64x3?
TensorFlow
import tensorflow as tf

batch_size = 32
image_size = 64

# Create dummy batch of images
images = tf.random.uniform([batch_size, image_size, image_size, 3])

# Define augmentation pipeline
augmentation = tf.keras.Sequential([
    tf.keras.layers.RandomFlip('horizontal'),
    tf.keras.layers.RandomRotation(0.1),
    tf.keras.layers.RandomZoom(0.2)
])

augmented_images = augmentation(images)
output_shape = augmented_images.shape
A(32, 62, 62, 3)
B(32, 64, 64, 3)
C(32, 64, 64, 1)
D(64, 64, 3)
Attempts:
2 left
💡 Hint
Augmentation layers keep the batch size and image dimensions the same.
🧠 Conceptual
intermediate
1:30remaining
Purpose of data augmentation in training pipelines
Why do we use data augmentation in machine learning training pipelines?
ATo artificially increase the diversity of training data and reduce overfitting
BTo remove noise from the training data
CTo convert images to grayscale for simpler models
DTo reduce the size of the training dataset for faster training
Attempts:
2 left
💡 Hint
Think about how augmentation affects model generalization.
Hyperparameter
advanced
1:30remaining
Choosing augmentation parameters for RandomRotation
Which of these RandomRotation parameters will rotate images up to 45 degrees in either direction?
Atf.keras.layers.RandomRotation(factor=0.125)
Btf.keras.layers.RandomRotation(factor=0.25)
Ctf.keras.layers.RandomRotation(factor=0.5)
Dtf.keras.layers.RandomRotation(factor=1.0)
Attempts:
2 left
💡 Hint
Rotation factor is a fraction of 2π radians (360 degrees).
Metrics
advanced
1:30remaining
Effect of data augmentation on training and validation accuracy
If a model trained without augmentation has training accuracy 98% and validation accuracy 75%, what is the most likely effect of adding data augmentation?
ABoth training and validation accuracy increase
BTraining accuracy increases, validation accuracy decreases
CTraining accuracy decreases, validation accuracy increases
DBoth training and validation accuracy decrease
Attempts:
2 left
💡 Hint
Augmentation makes training harder but improves generalization.
🔧 Debug
expert
2:30remaining
Debugging augmentation pipeline causing shape mismatch error
Given this pipeline, which option explains why a shape mismatch error occurs during training? ```python import tensorflow as tf augmentation = tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.Resizing(128, 128) ]) # Input images are 64x64x3 images = tf.random.uniform([16, 64, 64, 3]) augmented = augmentation(images) model = tf.keras.Sequential([ tf.keras.layers.InputLayer(input_shape=(64, 64, 3)), tf.keras.layers.Conv2D(32, 3, activation='relu'), tf.keras.layers.Flatten(), tf.keras.layers.Dense(10) ]) model(augmented) ```
AResizing layer is missing required arguments for interpolation
BRandomFlip changes the number of channels from 3 to 1, causing mismatch
CRandomRotation outputs a batch size different from input batch size
DThe model expects input shape (64,64,3) but augmentation outputs (128,128,3), causing mismatch
Attempts:
2 left
💡 Hint
Check the input shape expected by the model vs output shape of augmentation.

Practice

(1/5)
1. What is the main purpose of data augmentation in a TensorFlow training pipeline?
easy
A. To speed up the training process by skipping some images
B. To reduce the size of the training dataset
C. To create more varied training data by randomly changing original images
D. To convert images into grayscale only

Solution

  1. Step 1: Understand data augmentation concept

    Data augmentation creates new training images by applying random changes like flips or rotations to original images.
  2. Step 2: Identify the purpose in training pipeline

    This helps the model see more varied examples, improving learning and reducing overfitting.
  3. Final Answer:

    To create more varied training data by randomly changing original images -> Option C
  4. Quick Check:

    Data augmentation = varied training data [OK]
Hint: Augmentation adds variety to training images [OK]
Common Mistakes:
  • Thinking augmentation reduces dataset size
  • Believing augmentation speeds training by skipping data
  • Assuming augmentation only converts images to grayscale
2. Which of the following is the correct way to add a random flip augmentation layer in a TensorFlow Sequential pipeline?
easy
A. tf.keras.Sequential([tf.keras.layers.RandomFlip('horizontal')])
B. tf.keras.Sequential([tf.keras.layers.FlipRandom('horizontal')])
C. tf.keras.Sequential([tf.keras.layers.RandomFlip(mode='vertical')])
D. tf.keras.Sequential([tf.keras.layers.RandomFlip('diagonal')])

Solution

  1. Step 1: Recall TensorFlow augmentation syntax

    The correct layer is RandomFlip with argument 'horizontal' or 'vertical' as a string.
  2. Step 2: Check each option

    tf.keras.Sequential([tf.keras.layers.RandomFlip('horizontal')]) uses correct class and argument. tf.keras.Sequential([tf.keras.layers.FlipRandom('horizontal')]) uses wrong class name. tf.keras.Sequential([tf.keras.layers.RandomFlip(mode='vertical')]) uses keyword argument 'mode' which is invalid. tf.keras.Sequential([tf.keras.layers.RandomFlip('diagonal')]) uses unsupported flip mode 'diagonal'.
  3. Final Answer:

    tf.keras.Sequential([tf.keras.layers.RandomFlip('horizontal')]) -> Option A
  4. Quick Check:

    Correct layer and argument = tf.keras.Sequential([tf.keras.layers.RandomFlip('horizontal')]) [OK]
Hint: Use RandomFlip('horizontal') exactly as named [OK]
Common Mistakes:
  • Using wrong layer class name
  • Passing arguments with wrong keywords
  • Using unsupported flip modes
3. Given the following TensorFlow code snippet, what will be the output shape of the augmented images?
import tensorflow as tf
aug = tf.keras.Sequential([
  tf.keras.layers.RandomFlip('horizontal'),
  tf.keras.layers.RandomRotation(0.1)
])
input_image = tf.random.uniform([1, 128, 128, 3])
output_image = aug(input_image)
print(output_image.shape)
medium
A. (1, 128, 128, 3)
B. (128, 128, 3)
C. (1, 256, 256, 3)
D. (1, 128, 128)

Solution

  1. Step 1: Understand input and augmentation layers

    Input shape is (1, 128, 128, 3) meaning batch size 1, 128x128 image with 3 color channels. RandomFlip and RandomRotation do not change image size.
  2. Step 2: Check output shape after augmentation

    Augmentation layers keep the shape same, so output shape remains (1, 128, 128, 3).
  3. Final Answer:

    (1, 128, 128, 3) -> Option A
  4. Quick Check:

    Augmentation keeps shape = (1, 128, 128, 3) [OK]
Hint: Augmentation layers keep input shape unchanged [OK]
Common Mistakes:
  • Assuming rotation changes image size
  • Ignoring batch dimension in output
  • Dropping color channels
4. Identify the error in this TensorFlow data augmentation pipeline code:
import tensorflow as tf
aug = tf.keras.Sequential([
  tf.keras.layers.RandomFlip('horizontal'),
  tf.keras.layers.RandomRotation(0.2, 0.3)
])
medium
A. Missing input shape in Sequential
B. RandomFlip does not accept 'horizontal' as argument
C. Sequential cannot contain augmentation layers
D. RandomRotation requires a single float or tuple, not two separate floats

Solution

  1. Step 1: Check RandomRotation layer arguments

    RandomRotation expects either a single float or a tuple like (min_factor, max_factor). Passing two separate floats is invalid.
  2. Step 2: Verify other parts

    RandomFlip('horizontal') is valid. Sequential can contain augmentation layers. Input shape is optional here.
  3. Final Answer:

    RandomRotation requires a single float or tuple, not two separate floats -> Option D
  4. Quick Check:

    RandomRotation argument format error = RandomRotation requires a single float or tuple, not two separate floats [OK]
Hint: RandomRotation needs one float or tuple, not two floats [OK]
Common Mistakes:
  • Passing multiple floats instead of tuple to RandomRotation
  • Thinking RandomFlip argument is invalid
  • Believing Sequential can't hold augmentation layers
5. You want to build a TensorFlow data augmentation pipeline that randomly flips images horizontally, rotates them by up to 20%, and zooms in or out by up to 10%. Which of the following code snippets correctly implements this pipeline?
hard
A. tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.RandomZoom((0.1, 0.2)) ])
B. tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.RandomZoom(0.1) ])
C. tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.02), tf.keras.layers.RandomZoom(10) ])
D. tf.keras.Sequential([ tf.keras.layers.RandomFlip('vertical'), tf.keras.layers.RandomRotation(20), tf.keras.layers.RandomZoom((0.1, 0.1)) ])

Solution

  1. Step 1: Check flip and rotation parameters

    RandomFlip('horizontal') is correct. RandomRotation expects a float fraction (0.2 means 20%).
  2. Step 2: Check zoom parameters

    RandomZoom(0.1) means zoom in/out by 10%. tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.RandomZoom((0.1, 0.2)) ]) uses zoom (0.1, 0.2) which is uneven zoom, not requested.
  3. Final Answer:

    tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.RandomZoom(0.1) ]) -> Option B
  4. Quick Check:

    Correct flip, rotation fraction, and zoom float = tf.keras.Sequential([ tf.keras.layers.RandomFlip('horizontal'), tf.keras.layers.RandomRotation(0.2), tf.keras.layers.RandomZoom(0.1) ]) [OK]
Hint: Use fractions for rotation and single float for zoom [OK]
Common Mistakes:
  • Using degrees instead of fraction for rotation
  • Passing large numbers to zoom
  • Choosing wrong flip direction