code: def on_epoch_end(self, epoch, logs=None):
      # st.write('**Summary**')
      indices = np.random.choice(len(self._x_test), 36)
      test_data = self._x_test[indices]
      prediction = np.argmax(self.model.predict(test_data), axis=1)
      st.image(1.0 - test_data, caption=prediction)
      summary = "\n".join(
          "%(k)8s : %(v)8.5f" % {"k": k, "v": v}
          for (k, v) in logs.items()
      )
      st.text(summary)
      self._summary_stats.text(
          "%(epoch)8s :  %(epoch)s\n%(summary)s"
          % {"epoch": epoch, "summary": summary}
      )
  
file_path: streamlit/examples/mnist-cnn.py
imports: import math
  import time
  import numpy
  import pandas
  import tensorflow
  from tensorflow import keras
  from tensorflow.keras.datasets import mnist
  from tensorflow.keras.layers import Conv2D, Dense, Dropout, Flatten, MaxPooling2D
  from tensorflow.keras.models import Sequential
  from tensorflow.keras.optimizers import SGD
  from tensorflow.keras.utils import to_categorical
  import streamlit
  from streamlit import config
label_desc: Use image node_id 5 for calling the MyCallback obj's underlying member method code with example usage: obj.on_epoch_end(epoch, logs) without return types