Bird
Raised Fist0
TensorFlowml~10 mins

Accuracy and loss monitoring in TensorFlow - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to print the training accuracy after each epoch.

TensorFlow
model.fit(x_train, y_train, epochs=5, callbacks=[tf.keras.callbacks.LambdaCallback(on_epoch_end=lambda epoch, logs: print('Accuracy:', logs.get('[1]')))])
Drag options to blanks, or click blank then click option'
Aaccuracy
Bloss
Cval_loss
Dval_accuracy
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'loss' instead of 'accuracy' to print accuracy.
Using validation keys like 'val_accuracy' when training accuracy is needed.
2fill in blank
medium

Complete the code to include validation loss monitoring during training.

TensorFlow
model.fit(x_train, y_train, epochs=10, validation_data=(x_val, y_val), callbacks=[tf.keras.callbacks.LambdaCallback(on_epoch_end=lambda epoch, logs: print('Validation Loss:', logs.get('[1]')))])
Drag options to blanks, or click blank then click option'
Aval_accuracy
Baccuracy
Closs
Dval_loss
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'loss' instead of 'val_loss' to get validation loss.
Using 'val_accuracy' when loss is needed.
3fill in blank
hard

Fix the error in the callback to correctly print validation accuracy.

TensorFlow
model.fit(x_train, y_train, epochs=3, validation_data=(x_val, y_val), callbacks=[tf.keras.callbacks.LambdaCallback(on_epoch_end=lambda epoch, logs: print('Val Accuracy:', logs.get('[1]')))])
Drag options to blanks, or click blank then click option'
Aval_accuracy
Bloss
Caccuracy
Dval_loss
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'accuracy' instead of 'val_accuracy' for validation accuracy.
Using 'val_loss' when accuracy is needed.
4fill in blank
hard

Fill both blanks to create a dictionary that stores training loss and validation accuracy after each epoch.

TensorFlow
history_dict = { 'train_loss': logs.get('[1]'), 'val_acc': logs.get('[2]') }
Drag options to blanks, or click blank then click option'
Aloss
Baccuracy
Cval_accuracy
Dval_loss
Attempts:
3 left
💡 Hint
Common Mistakes
Mixing up training and validation keys.
Using 'accuracy' instead of 'loss' for training loss.
5fill in blank
hard

Fill all three blanks to create a dictionary comprehension that stores metric values greater than 0.5 from logs.

TensorFlow
filtered_metrics = {k: v for k, v in logs.items() if v [1] 0.5 and 'acc' [2] k and 'val' [3] k}
Drag options to blanks, or click blank then click option'
A>
Bin
Cnot in
D<
Attempts:
3 left
💡 Hint
Common Mistakes
Using '<' instead of '>' for value comparison.
Confusing 'in' and 'not in' for substring checks.

Practice

(1/5)
1. What is the main purpose of monitoring accuracy and loss during TensorFlow model training?
easy
A. To change the model architecture automatically
B. To track how well the model is learning and improving
C. To increase the size of the training dataset
D. To speed up the training process by skipping epochs

Solution

  1. Step 1: Understand accuracy and loss roles

    Accuracy shows how many predictions are correct, loss shows error size.
  2. Step 2: Purpose of monitoring during training

    Tracking these helps see if the model is learning or needs adjustment.
  3. Final Answer:

    To track how well the model is learning and improving -> Option B
  4. Quick Check:

    Accuracy and loss track learning progress = C [OK]
Hint: Accuracy and loss show model learning quality [OK]
Common Mistakes:
  • Thinking accuracy changes dataset size
  • Believing monitoring changes model structure
  • Assuming monitoring speeds training automatically
2. Which is the correct way to include accuracy monitoring when compiling a TensorFlow model?
easy
A. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
B. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
C. model.compile(optimizer='adam', metrics=['accuracy'])
D. model.compile(loss='sparse_categorical_crossentropy', metrics='accuracy')

Solution

  1. Step 1: Check required compile parameters

    Optimizer and loss are required; metrics is optional for monitoring.
  2. Step 2: Correct syntax for metrics

    metrics must be a list like ['accuracy'], not a string alone.
  3. Final Answer:

    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) -> Option A
  4. Quick Check:

    metrics=['accuracy'] in compile = B [OK]
Hint: Use metrics=['accuracy'] inside model.compile [OK]
Common Mistakes:
  • Omitting metrics parameter
  • Passing metrics as a string instead of list
  • Leaving out loss or optimizer
3. Given this code snippet, what will print(history.history['accuracy']) output?
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
history = model.fit(x_train, y_train, epochs=2)
print(history.history['accuracy'])
medium
A. A list of loss values for each epoch
B. A single float value of final accuracy, e.g. 0.90
C. An error because 'accuracy' is not in history
D. A list of accuracy values for each epoch, e.g. [0.85, 0.90]

Solution

  1. Step 1: Understand history.history content

    It stores lists of metric values per epoch, including accuracy if monitored.
  2. Step 2: What history.history['accuracy'] returns

    It returns a list of accuracy values, one per epoch, not a single value or error.
  3. Final Answer:

    A list of accuracy values for each epoch, e.g. [0.85, 0.90] -> Option D
  4. Quick Check:

    history.history['accuracy'] = list per epoch [OK]
Hint: history.history['accuracy'] holds accuracy per epoch list [OK]
Common Mistakes:
  • Expecting a single float instead of list
  • Confusing accuracy with loss values
  • Assuming key 'accuracy' is missing
4. You run this code but get a KeyError when accessing history.history['accuracy']. What is the likely cause?
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy')
history = model.fit(x_train, y_train, epochs=3)
print(history.history['accuracy'])
medium
A. Accuracy was not included in metrics during model.compile
B. The model.fit call is missing the epochs parameter
C. The loss function is incorrect for accuracy monitoring
D. history.history only stores loss, not accuracy

Solution

  1. Step 1: Check model.compile parameters

    Accuracy monitoring requires metrics=['accuracy'] in compile, missing here.
  2. Step 2: Effect on history.history keys

    Without metrics=['accuracy'], history.history has no 'accuracy' key, causing KeyError.
  3. Final Answer:

    Accuracy was not included in metrics during model.compile -> Option A
  4. Quick Check:

    Missing metrics=['accuracy'] causes KeyError [OK]
Hint: Always add metrics=['accuracy'] to compile to track accuracy [OK]
Common Mistakes:
  • Forgetting to add metrics=['accuracy']
  • Assuming loss function controls accuracy keys
  • Thinking epochs parameter affects history keys
5. You want to monitor both accuracy and loss during training and plot their progress after training. Which code snippet correctly compiles the model and accesses the data for plotting?
hard
A. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics='accuracy') history = model.fit(x_train, y_train, epochs=5) plt.plot(history['accuracy']) plt.plot(history['loss'])
B. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy') history = model.fit(x_train, y_train, epochs=5) plt.plot(history.history['accuracy']) plt.plot(history.history['loss'])
C. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=5) plt.plot(history.history['accuracy']) plt.plot(history.history['loss'])
D. model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=5) plt.plot(history['accuracy']) plt.plot(history['loss'])

Solution

  1. Step 1: Check model.compile metrics syntax

    metrics must be a list like ['accuracy']. B omits it, C uses string 'accuracy'.
  2. Step 2: Check history access for plotting

    history.history['accuracy'] and history.history['loss'] are correct; history['accuracy'] fails as history object lacks these attributes.
  3. Final Answer:

    model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) history = model.fit(x_train, y_train, epochs=5) plt.plot(history.history['accuracy']) plt.plot(history.history['loss']) -> Option C
  4. Quick Check:

    metrics list + history.history keys = A [OK]
Hint: Use metrics=['accuracy'] and history.history for plotting [OK]
Common Mistakes:
  • Passing metrics as string instead of list
  • Accessing history keys directly on history object
  • Omitting metrics parameter