Bird
Raised Fist0
TensorFlowml~8 mins

Transformer basics in TensorFlow - Model Metrics & Evaluation

Choose your learning style10 modes available
Metrics & Evaluation - Transformer basics
Which metric matters for Transformer basics and WHY

Transformers are often used for tasks like language translation or text classification. The key metrics depend on the task:

  • Accuracy measures how many predictions are exactly right. It is simple and useful for classification tasks.
  • Loss (like cross-entropy loss) shows how well the model predicts probabilities. Lower loss means better predictions.
  • Perplexity is common in language models. It measures how surprised the model is by the text. Lower perplexity means the model predicts text better.
  • BLEU score is used for translation tasks. It compares the model's output to human translations. Higher BLEU means better translation quality.

We focus on these metrics because they tell us if the Transformer understands and generates language well.

Confusion matrix example for Transformer classification

Imagine a Transformer classifies emails as spam or not spam. Here is a confusion matrix:

      | Predicted Spam | Predicted Not Spam |
      |----------------|--------------------|
      | True Positives (TP) = 80  | False Positives (FP) = 10 |
      | False Negatives (FN) = 20 | True Negatives (TN) = 90  |
    

Total emails = 80 + 20 + 10 + 90 = 200

From this, we calculate:

  • Precision = TP / (TP + FP) = 80 / (80 + 10) = 0.89
  • Recall = TP / (TP + FN) = 80 / (80 + 20) = 0.80
  • Accuracy = (TP + TN) / Total = (80 + 90) / 200 = 0.85
Precision vs Recall tradeoff with Transformer example

For a Transformer detecting spam:

  • High precision means most emails marked as spam really are spam. This avoids annoying users by wrongly blocking good emails.
  • High recall means the model finds most spam emails. This keeps inboxes clean but might block some good emails by mistake.

Choosing between precision and recall depends on what is worse: missing spam or blocking good emails.

What good vs bad metric values look like for Transformer basics
  • Good: Accuracy above 85%, loss steadily decreasing during training, perplexity close to 10 or lower for language models, BLEU score above 30 for translation.
  • Bad: Accuracy near random chance (e.g., 50% for two classes), loss not improving or increasing, very high perplexity (100+), BLEU score below 10.

Good metrics mean the Transformer learns meaningful patterns. Bad metrics mean it struggles to understand or generate language.

Common pitfalls in Transformer metrics
  • Accuracy paradox: High accuracy can be misleading if classes are imbalanced. For example, if 95% of emails are not spam, a model always predicting "not spam" gets 95% accuracy but is useless.
  • Data leakage: If test data leaks into training, metrics look unrealistically good but model fails in real use.
  • Overfitting: Training loss goes down but validation loss goes up. The model memorizes training data but does not generalize.
  • Ignoring task-specific metrics: Using only accuracy for language generation tasks misses quality aspects like fluency and meaning.
Self-check question

Your Transformer model for spam detection has 98% accuracy but only 12% recall on spam emails. Is it good for production? Why or why not?

Answer: No, it is not good. The model misses 88% of spam emails (low recall), so many spam messages get through. High accuracy is misleading because most emails are not spam. For spam detection, recall is very important to catch as many spam emails as possible.

Key Result
For Transformer basics, focus on accuracy, loss, perplexity, and BLEU score to evaluate language understanding and generation quality.

Practice

(1/5)
1. What is the main purpose of the attention mechanism in a Transformer model?
easy
A. To reduce the number of layers
B. To increase the size of the model
C. To focus on important parts of the input sequence
D. To generate random outputs

Solution

  1. Step 1: Understand attention in Transformers

    The attention mechanism helps the model look at important words or parts in the input sequence.
  2. Step 2: Identify the main goal of attention

    Its goal is to give more weight to relevant parts, improving understanding of context.
  3. Final Answer:

    To focus on important parts of the input sequence -> Option C
  4. Quick Check:

    Attention = Focus on important parts [OK]
Hint: Attention means focusing on key input parts [OK]
Common Mistakes:
  • Thinking attention increases model size
  • Confusing attention with layer count
  • Believing attention creates random outputs
2. Which of the following is the correct way to import the MultiHeadAttention layer in TensorFlow?
easy
A. from tensorflow.keras.layers import MultiHeadAttention
B. import MultiHeadAttention from tensorflow.layers
C. from tensorflow import MultiHeadAttention
D. import MultiHeadAttention from keras.layers

Solution

  1. Step 1: Recall TensorFlow Keras layer imports

    TensorFlow's Keras layers are imported from tensorflow.keras.layers module.
  2. Step 2: Check correct import syntax

    The correct syntax is: from tensorflow.keras.layers import MultiHeadAttention.
  3. Final Answer:

    from tensorflow.keras.layers import MultiHeadAttention -> Option A
  4. Quick Check:

    Correct import = from tensorflow.keras.layers import MultiHeadAttention [OK]
Hint: Use tensorflow.keras.layers for Keras layers [OK]
Common Mistakes:
  • Using incorrect import paths
  • Confusing tensorflow and keras imports
  • Using wrong import syntax
3. Given the following TensorFlow code snippet, what is the shape of the output tensor?
import tensorflow as tf
mha = tf.keras.layers.MultiHeadAttention(num_heads=2, key_dim=4)
query = tf.random.uniform((1, 3, 8))
value = tf.random.uniform((1, 4, 8))
output = mha(query=query, value=value)
medium
A. (1, 3, 4)
B. (1, 4, 8)
C. (3, 1, 8)
D. (1, 3, 8)

Solution

  1. Step 1: Understand MultiHeadAttention input shapes

    Query shape is (batch=1, query_len=3, features=8), value shape is (1, 4, 8).
  2. Step 2: Determine output shape

    Output shape matches query length and feature dimension: (1, 3, 8).
  3. Final Answer:

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

    Output shape = query shape except last dim [OK]
Hint: Output shape matches query's first two dims [OK]
Common Mistakes:
  • Confusing value length with output length
  • Mixing batch and sequence dimensions
  • Assuming output feature dims change
4. Identify the error in this Transformer block code snippet:
import tensorflow as tf
class SimpleTransformer(tf.keras.layers.Layer):
    def __init__(self):
        super().__init__()
        self.mha = tf.keras.layers.MultiHeadAttention(num_heads=2, key_dim=4)
    def call(self, x):
        attn_output = self.mha(query=x)
        return attn_output + x
medium
A. MultiHeadAttention requires 'value' argument
B. The addition attn_output + x causes shape mismatch
C. The call method should return only attn_output
D. Missing positional encoding before attention

Solution

  1. Step 1: Check MultiHeadAttention required arguments

    MultiHeadAttention needs query and value arguments; value is missing here.
  2. Step 2: Understand why value is needed

    Without value, the layer cannot compute attention properly, causing an error.
  3. Final Answer:

    MultiHeadAttention requires 'value' argument -> Option A
  4. Quick Check:

    Missing value argument = MultiHeadAttention requires 'value' argument [OK]
Hint: Always provide query and value arguments to MultiHeadAttention [OK]
Common Mistakes:
  • Assuming value defaults when only query is provided
  • Ignoring required arguments in call
  • Thinking positional encoding is mandatory here
5. You want to build a Transformer block in TensorFlow that includes MultiHeadAttention followed by a feed-forward network with ReLU activation. Which code snippet correctly implements this?
hard
A. class TransformerBlock(tf.keras.layers.Layer): def __init__(self): super().__init__() self.mha = tf.keras.layers.MultiHeadAttention(num_heads=4, key_dim=8) self.ffn = tf.keras.Sequential([ tf.keras.layers.Dense(8, activation='relu'), tf.keras.layers.Dense(32) ]) def call(self, x): attn_output = self.mha(query=x, key=x, value=x) ffn_output = self.ffn(attn_output) return ffn_output + x
B. class TransformerBlock(tf.keras.layers.Layer): def __init__(self): super().__init__() self.mha = tf.keras.layers.MultiHeadAttention(num_heads=4, key_dim=8) self.ffn = tf.keras.Sequential([ tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dense(8) ]) def call(self, x): attn_output = self.mha(query=x, key=x, value=x) ffn_output = self.ffn(attn_output) return ffn_output + x
C. class TransformerBlock(tf.keras.layers.Layer): def __init__(self): super().__init__() self.mha = tf.keras.layers.MultiHeadAttention(num_heads=8, key_dim=4) self.ffn = tf.keras.Sequential([ tf.keras.layers.Dense(8, activation='relu'), tf.keras.layers.Dense(32) ]) def call(self, x): attn_output = self.mha(query=x, key=x, value=x) ffn_output = self.ffn(attn_output) return ffn_output + x
D. class TransformerBlock(tf.keras.layers.Layer): def __init__(self): super().__init__() self.mha = tf.keras.layers.MultiHeadAttention(num_heads=2, key_dim=8) self.ffn = tf.keras.Sequential([ tf.keras.layers.Dense(8, activation='relu'), tf.keras.layers.Dense(32) ]) def call(self, x): attn_output = self.mha(query=x, key=x, value=x) ffn_output = self.ffn(attn_output) return ffn_output + x

Solution

  1. Step 1: Check MultiHeadAttention parameters

    num_heads=4, key_dim=8 produces output_dim=32, valid for Transformer blocks.
  2. Step 2: Verify feed-forward network structure

    FFN uses Dense(32, activation='relu') to expand, then Dense(8) to match input dim.
  3. Step 3: Confirm call method logic

    Applies self-attention, FFN on output, residual connection (shapes match: 8).
  4. Final Answer:

    Code with num_heads=4, key_dim=8, FFN Dense(32, ReLU) then Dense(8) -> Option B
  5. Quick Check:

    MHA(4 heads, key_dim=8) + FFN expand(32 ReLU)-contract(8) + residual [OK]
Hint: Feed-forward expands then reduces features after attention [OK]
Common Mistakes:
  • Swapping Dense layer sizes in feed-forward network
  • Using wrong num_heads or key_dim values
  • Omitting key argument in MultiHeadAttention
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