# tff.learning.templates.build_functional_model_delta_client_work

<br />

|---|
| [![](https://www.tensorflow.org/images/GitHub-Mark-32px.png) View source on GitHub](https://github.com/tensorflow/federated/blob/v0.87.0 Version 2.0, January 2004 Licensed under the Apache License, Version 2.0 (the) |

Creates a `ClientWorkProcess` for federated averaging.

    tff.learning.templates.build_functional_model_delta_client_work(
        *,
        model: https://www.tensorflow.org/federated/api_docs/python/tff/learning/models/FunctionalModel,
        optimizer: https://www.tensorflow.org/federated/api_docs/python/tff/learning/optimizers/Optimizer,
        client_weighting: https://www.tensorflow.org/federated/api_docs/python/tff/learning/ClientWeighting,
        metrics_aggregator: Optional[https://www.tensorflow.org/federated/api_docs/python/tff/learning/metrics/MetricsAggregatorType] = None,
        loop_implementation: https://www.tensorflow.org/federated/api_docs/python/tff/learning/LoopImplementation = https://www.tensorflow.org/federated/api_docs/python/tff/learning/LoopImplementation#DATASET_REDUCE
    ) -> https://www.tensorflow.org/federated/api_docs/python/tff/learning/templates/ClientWorkProcess

This differs from [`tff.learning.templates.build_model_delta_client_work`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/templates/build_model_delta_client_work) in
that it only accepts [`tff.learning.models.FunctionalModel`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/models/FunctionalModel) and
[`tff.learning.optimizers.Optimizer`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/optimizers/Optimizer) type arguments, resulting in TensorFlow
graphs that do not contain [`tf.Variable`](https://www.tensorflow.org/api_docs/python/tf/Variable) operations.

<br />

<br />

<br />

| ## Args ||
|---|---|
| `model` | A [`tff.learning.models.FunctionalModel`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/models/FunctionalModel) to train. |
| `optimizer` | A [`tff.learning.optimizers.Optimizer`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/optimizers/Optimizer) to use for local, on-client optimization. |
| `client_weighting` | A [`tff.learning.ClientWeighting`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/ClientWeighting) value. |
| `metrics_aggregator` | A function that takes in the metric finalizers (i.e., [`tff.learning.models.VariableModel.metric_finalizers()`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/models/VariableModel#metric_finalizers)) and returns a [`tff.Computation`](https://www.tensorflow.org/federated/api_docs/python/tff/Computation) for aggregating the unfinalized metrics. If `None`, this is set to [`tff.learning.metrics.sum_then_finalize`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/metrics/sum_then_finalize). |
| `loop_implementation` | Changes the implementation of the training loop generated. See [`tff.learning.LoopImplementation`](https://www.tensorflow.org/federated/api_docs/python/tff/learning/LoopImplementation) for more details. |

<br />

<br />

<br />

<br />

| ## Returns ||
|---|---|
| A `ClientWorkProcess`. ||

<br />