# tf.keras.callbacks.SidecarEvaluatorModelExport

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/keras-team/keras/tree/v2.13.1/keras/utils/sidecar_evaluator.py#L341-L432) |

Callback to save the best Keras model.

Inherits From: [`ModelCheckpoint`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/callbacks/ModelCheckpoint), [`Callback`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/callbacks/Callback)

#### View aliases


**Compat aliases for migration**

See
[Migration guide](https://www.tensorflow.org/guide/migrate) for
more details.

\`tf.compat.v1.keras.callbacks.SidecarEvaluatorModelExport\`

<br />

    tf.keras.callbacks.SidecarEvaluatorModelExport(
        export_filepath, checkpoint_filepath, **kwargs
    )

It expands the functionality of the existing ModelCheckpoint callback to
enable exporting the best models after evaluation with validation dataset.

When using the `SidecarEvaluatorModelExport` callback in conjunction with
[`keras.utils.SidecarEvaluator`](https://www.tensorflow.org/versions/r2.13/api_docs/python/tf/keras/utils/SidecarEvaluator), users should provide the `filepath`, which
is the path for this callback to export model or save weights to, and
`ckpt_filepath`, which is where the checkpoint is available to extract
the epoch number from. The callback will then export the model that the
evaluator deems as the best (among the checkpoints saved by the training
counterpart) to the specified `filepath`. This callback is intended to be
used by SidecarEvaluator only.

#### Example:

    model.compile(loss=..., optimizer=...,
                  metrics=['accuracy'])
    sidecar_evaluator = keras.utils.SidecarEvaluator(
        model=model,
        data=dataset,
        checkpoint_dir=checkpoint_dir,
        max_evaluations=1,
        callbacks=[
            SidecarEvaluatorModelExport(
                export_filepath=os.path.join(checkpoint_dir,
                                      'best_model_eval',
                                      'best-model-{epoch:04d}'),
                checkpoint_filepath=os.path.join(checkpoint_dir,
                'ckpt-{epoch:04d}'),
                save_freq="eval",
                save_weights_only=True,
                monitor="loss",
                mode="min",
                verbose=1,
            ),
        ],
    )
    sidecar_evaluator.start()
    # Model weights are saved if evaluator deems it's the best seen so far.

    <!-- Tabular view -->
     <table class="responsive fixed orange">
    <colgroup><col width="214px"><col></colgroup>
    <tr><th colspan="2"><h2 class="add-link">Args</h2></th></tr>

    <tr>
    <td>
    `export_filepath`<a id="export_filepath"></a>
    </td>
    <td>
    Path where best models should be saved by this
    `SidecarEvaluatorModelExport` callback. Epoch formatting options, such
    as `os.path.join(best_model_dir, 'best-model-{epoch:04d}')`, can be
    used to allow saved model to preserve epoch information in the file
    name. SidecarEvaluatorModelExport will use the "training epoch" at
    which the checkpoint was saved by training to fill the epoch
    placeholder in the path.
    </td>
    </tr><tr>
    <td>
    `checkpoint_filepath`<a id="checkpoint_filepath"></a>
    </td>
    <td>
    Path where checkpoints were saved by training. This
    should be the same as what is provided to `filepath` argument of
    `ModelCheckpoint` on the training side, such as
    `os.path.join(checkpoint_dir, 'ckpt-{epoch:04d}')`.
    </td>
    </tr>
    </table>



    ## Methods

    <h3 id="set_model"><code>set_model</code></h3>

    <a target="_blank" class="external" href="https://github.com/keras-team/keras/tree/v2.13.1/keras/callbacks.py#L694-L695">View source</a>

    <pre class="devsite-click-to-copy prettyprint lang-py tfo-signature-link">
    <code>set_model(
        model
    )
    </code></pre>




    <h3 id="set_params"><code>set_params</code></h3>

    <a target="_blank" class="external" href="https://github.com/keras-team/keras/tree/v2.13.1/keras/callbacks.py#L691-L692">View source</a>

    <pre class="devsite-click-to-copy prettyprint lang-py tfo-signature-link">
    <code>set_params(
        params
    )
    </code></pre>