--- title: Keras with TensorBoard --- The example below demonstrates the integration of ClearML into code which uses Keras and TensorBoard. View it in [script](https://github.com/allegroai/clearml/blob/master/examples/frameworks/keras/keras_tensorboard.py) or in [Jupyter Notebook](https://github.com/allegroai/clearml/blob/master/examples/frameworks/keras/jupyter_keras_TB_example.ipynb). :::note The example in [Jupyter Notebook](https://github.com/allegroai/clearml/blob/master/examples/frameworks/keras/jupyter_keras_TB_example.ipynb) includes a clickable icon to open the notebook in Google Colab. ::: The example script does the following: 1. Trains a simple deep neural network on the Keras built-in [MNIST](https://keras.io/api/datasets/mnist/#load_data-function) dataset. 1. Builds a sequential model using a categorical cross entropy loss objective function. 1. Specifies accuracy as the metric, and uses two callbacks: a TensorBoard callback and a model checkpoint callback. 1. During script execution, creates an experiment named `Keras with TensorBoard example`, which is associated with the `examples` project (in script) or the `Colab notebooks` project (in Jupyter Notebook). ## Scalars The loss and accuracy metric scalar plots appear in **SCALARS**, along with the resource utilization plots, which are titled **:monitor: machine**. ![image](../../../img/examples_keras_01.png) ## Histograms Histograms for layer density appear in **PLOTS**. ![image](../../../img/examples_keras_02.png) ## Hyperparameters ClearML automatically logs command line options generated with `argparse`, and TensorFlow Definitions. Command line options appear in **CONFIGURATION** **>** **HYPERPARAMETERS** **>** **Args**. ![image](../../../img/examples_keras_00.png) TensorFlow Definitions appear in **TF_DEFINE**. ![image](../../../img/examples_keras_00a.png) ## Console Text printed to the console for training progress, as well as all other console output, appear in **CONSOLE**. ![image](../../../img/keras_colab_01.png) ## Configuration Objects In the experiment code, a configuration dictionary is connected to the Task by calling the [`Task.connect`](../../../references/sdk/task.md#connect) method. ```python task.connect_configuration( name="MyConfig" configuration={'test': 1337, 'nested': {'key': 'value', 'number': 1}} ) ``` It appears in **CONFIGURATION** **>** **CONFIGURATION OBJECTS** **>** **MyConfig**. ![image](../../../img/keras_colab_02.png)