Bird
Raised Fist0
TensorFlowml~12 mins

Confusion matrix visualization in TensorFlow - Model Pipeline Trace

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
Model Pipeline - Confusion matrix visualization

This pipeline trains a simple model to classify images into two categories. After training, it creates a confusion matrix to visualize how well the model predicts each class, showing correct and incorrect predictions.

Data Flow - 6 Stages
1Load dataset
NoneLoad 1000 images with labels (2 classes)1000 rows x 28x28 pixels x 1 channel
Image of handwritten digit '0' with label 0
2Preprocessing
1000 rows x 28x28 pixels x 1 channelNormalize pixel values to range 0-11000 rows x 28x28 pixels x 1 channel
Pixel value 255 becomes 1.0
3Train/test split
1000 rows x 28x28 pixels x 1 channelSplit data into 800 training and 200 testing samplesTrain: 800 rows x 28x28 pixels x 1 channel, Test: 200 rows x 28x28 pixels x 1 channel
Training image with label 1
4Model training
800 rows x 28x28 pixels x 1 channelTrain simple neural network for 5 epochsTrained model
Model learns to classify images
5Prediction on test set
200 rows x 28x28 pixels x 1 channelModel predicts class probabilities200 rows x 2 classes
[0.8, 0.2] predicted probabilities for one image
6Confusion matrix calculation
200 true labels, 200 predicted labelsCompare true and predicted labels to count correct/incorrect predictions2 x 2 matrix
[[90, 10], [15, 85]]
Training Trace - Epoch by Epoch
Loss
0.7 |****
0.6 |*** 
0.5 |**  
0.4 |**  
0.3 |*   
0.2 |*   
     1 2 3 4 5 Epochs
EpochLoss ↓Accuracy ↑Observation
10.650.60Model starts learning basic patterns
20.450.75Accuracy improves as model adjusts weights
30.350.82Model captures more features
40.280.87Loss decreases steadily
50.220.90Model converges with good accuracy
Prediction Trace - 4 Layers
Layer 1: Input layer
Layer 2: Dense hidden layer with ReLU
Layer 3: Output layer with softmax
Layer 4: Prediction
Model Quiz - 3 Questions
Test your understanding
What does the confusion matrix tell us about the model?
AHow many predictions were correct or incorrect for each class
BThe exact loss value during training
CThe number of layers in the model
DThe pixel values of input images
Key Insight
The confusion matrix helps us understand not just overall accuracy but also which classes the model confuses. This insight guides improvements by showing specific errors.

Practice

(1/5)
1. What does a confusion matrix primarily show in machine learning?
easy
A. The size of the training dataset
B. The speed of the training process
C. The number of layers in a neural network
D. How many times each class was predicted correctly or wrongly

Solution

  1. Step 1: Understand the purpose of a confusion matrix

    A confusion matrix is a table used to describe the performance of a classification model by showing correct and incorrect predictions for each class.
  2. Step 2: Match the description to the options

    The description 'How many times each class was predicted correctly or wrongly' matches the purpose of a confusion matrix.
  3. Final Answer:

    How many times each class was predicted correctly or wrongly -> Option D
  4. Quick Check:

    Confusion matrix = correct and wrong predictions [OK]
Hint: Confusion matrix counts correct and wrong predictions per class [OK]
Common Mistakes:
  • Confusing confusion matrix with training speed
  • Thinking it shows model architecture details
  • Assuming it shows dataset size
2. Which TensorFlow function is used to create a confusion matrix from true and predicted labels?
easy
A. tf.data.Dataset.from_tensor_slices
B. tf.keras.layers.Dense
C. tf.math.confusion_matrix
D. tf.image.resize

Solution

  1. Step 1: Identify TensorFlow functions related to confusion matrix

    The function to create a confusion matrix is specifically designed to compare true and predicted labels.
  2. Step 2: Match the function to the options

    tf.math.confusion_matrix is the correct TensorFlow function for this purpose, while others relate to layers, datasets, or image processing.
  3. Final Answer:

    tf.math.confusion_matrix -> Option C
  4. Quick Check:

    Confusion matrix function = tf.math.confusion_matrix [OK]
Hint: Use tf.math.confusion_matrix for confusion matrix in TensorFlow [OK]
Common Mistakes:
  • Choosing layer or dataset functions instead
  • Confusing with image processing functions
  • Using non-existent TensorFlow functions
3. What is the output of this code snippet?
import tensorflow as tf
true_labels = [0, 1, 2, 2, 0]
pred_labels = [0, 2, 2, 2, 0]
cm = tf.math.confusion_matrix(true_labels, pred_labels)
print(cm.numpy())
medium
A. [[2 0 0] [0 0 1] [0 0 2]]
B. [[2 0 0] [0 1 0] [0 0 2]]
C. [[1 0 1] [0 0 1] [0 0 2]]
D. [[2 0 0] [0 0 2] [0 0 1]]

Solution

  1. Step 1: Count true vs predicted labels

    For class 0: true labels are at positions 0 and 4, predicted also 0 both times -> 2 correct.
    For class 1: true label at position 1, predicted is 2 -> 0 correct, 1 predicted as 2.
    For class 2: true labels at positions 2 and 3, predicted both 2 -> 2 correct.
  2. Step 2: Build confusion matrix rows

    Row 0 (true 0): predicted 0 twice -> [2,0,0]
    Row 1 (true 1): predicted 2 once -> [0,0,1]
    Row 2 (true 2): predicted 2 twice -> [0,0,2]
  3. Final Answer:

    [[2 0 0] [0 0 1] [0 0 2]] -> Option A
  4. Quick Check:

    Count true vs predicted labels = [[2 0 0] [0 0 1] [0 0 2]] [OK]
Hint: Count true-predicted pairs per class row-wise [OK]
Common Mistakes:
  • Mixing up true and predicted label order
  • Counting predicted labels as rows
  • Miscounting class occurrences
4. Identify the error in this TensorFlow code for confusion matrix visualization:
import tensorflow as tf
true_labels = [0, 1, 1, 0]
pred_labels = [0, 1, 0, 0]
cm = tf.math.confusion_matrix(true_labels, pred_labels, num_classes=1)
print(cm.numpy())
medium
A. tf.math.confusion_matrix does not accept num_classes argument
B. num_classes should be 2, not 1
C. true_labels and pred_labels must be tensors, not lists
D. print(cm.numpy()) should be print(cm)

Solution

  1. Step 1: Check the number of classes in labels

    True and predicted labels only contain 0 and 1, so there are 2 classes total.
  2. Step 2: Verify num_classes argument

    Setting num_classes=1 is incorrect because labels include 1, which is not in [0, 1), causing a ValueError (labels out of range).
  3. Final Answer:

    num_classes should be 2, not 1 -> Option B
  4. Quick Check:

    num_classes must match actual classes = 2 [OK]
Hint: Set num_classes to actual number of classes in labels [OK]
Common Mistakes:
  • Using wrong num_classes value
  • Thinking lists are invalid inputs
  • Misunderstanding print method for tensors
5. You want to visualize a confusion matrix as a heatmap using TensorFlow and Matplotlib. Which code snippet correctly creates and displays the heatmap?
hard
A. import tensorflow as tf import matplotlib.pyplot as plt true = [0,1,0,1] pred = [0,0,0,1] cm = tf.math.confusion_matrix(true, pred) plt.imshow(cm, cmap='Blues') plt.colorbar() plt.show()
B. import tensorflow as tf import matplotlib.pyplot as plt true = [0,1,0,1] pred = [0,0,0,1] cm = tf.keras.metrics.ConfusionMatrix(true, pred) plt.imshow(cm) plt.show()
C. import tensorflow as tf import matplotlib.pyplot as plt true = [0,1,0,1] pred = [0,0,0,1] cm = tf.math.confusion_matrix(true, pred) plt.plot(cm) plt.show()
D. import tensorflow as tf import matplotlib.pyplot as plt true = [0,1,0,1] pred = [0,0,0,1] cm = tf.math.confusion_matrix(true, pred) plt.bar(cm) plt.show()

Solution

  1. Step 1: Generate confusion matrix using TensorFlow

    tf.math.confusion_matrix(true, pred) correctly creates the confusion matrix tensor.
  2. Step 2: Visualize matrix using Matplotlib heatmap

    plt.imshow with cmap='Blues' displays the matrix as a heatmap, plt.colorbar adds a color scale, and plt.show() renders the plot.
  3. Final Answer:

    Code snippet B correctly creates and displays the heatmap -> Option A
  4. Quick Check:

    Use tf.math.confusion_matrix + plt.imshow + plt.colorbar [OK]
Hint: Use plt.imshow with cmap and colorbar for heatmap [OK]
Common Mistakes:
  • Using tf.keras.metrics.ConfusionMatrix (does not exist)
  • Plotting confusion matrix with plt.plot or plt.bar
  • Forgetting to add colorbar for scale