class_docstr: Standard Variational Autoencoders (VAE) for Collaborative Filtering implementation.
docstr: Plots:
  1) Loss per epoch both for validation and train sets
  2) NDCG@k per epoch of the validation set
code: def display_metrics(self):
      """Plots:
      1) Loss per epoch both for validation and train sets
      2) NDCG@k per epoch of the validation set
      """
      # Plot setup
      plt.figure(figsize=(14, 5))
      sns.set(style="whitegrid")
  
      # Plot loss on the left graph
      plt.subplot(1, 2, 1)
      plt.plot(self.train_loss, color="b", linestyle="-", label="Train")
      plt.plot(self.val_loss, color="r", linestyle="-", label="Val")
      plt.title("\n")
      plt.xlabel("Epochs", size=14)
      plt.ylabel("Loss", size=14)
      plt.legend(loc="upper left")
  
      # Plot NDCG on the right graph
      plt.subplot(1, 2, 2)
      plt.plot(self.val_ndcg, color="r", linestyle="-", label="Val")
      plt.title("\n")
      plt.xlabel("Epochs", size=14)
      plt.ylabel("NDCG@k", size=14)
      plt.legend(loc="upper left")
  
      # Add title
      plt.suptitle("TRAINING AND VALIDATION METRICS HISTORY", size=16)
      plt.tight_layout(pad=2)
  
imports: import numpy
  import matplotlib.pyplot
  import seaborn
  import tensorflow
  from tensorflow.keras.layers import *
  from tensorflow.keras.models import Model
  from tensorflow.keras.losses import binary_crossentropy
  from tensorflow.keras import backend
  from tensorflow.keras.callbacks import ReduceLROnPlateau, Callback
  from recommenders.evaluation.python_evaluation import ndcg_at_k
label_desc: Use image node_id 8 for calling the StandardVAE obj's underlying member method code with example usage: obj.display_metrics() without return types