The returned computation proceeds in two stages: (1) reconstruction and (2)
evaluation. During the reconstruction stage, local variables are reconstructed
by freezing global variables and training using reconstruction_optimizer_fn.
During the evaluation stage, the reconstructed local variables and global
variables are evaluated using the provided loss_fn and metrics_fn.
Usage of returned computation:
eval_comp = build_federated_evaluation(...)
metrics = eval_comp(reconstruction_utils.get_global_variables(model),
A no-arg function that returns a
tff.learning.reconstruction.Model. This method must not capture
Tensorflow tensors or variables and use them. Must be constructed entirely
from scratch on each invocation, returning the same pre-constructed model
each call will result in an error.
A no-arg function returning a tf.keras.losses.Loss to use to
reconstruct and evaluate the model. The loss will be applied to the
model's outputs during the evaluation stage. The final loss metric is the
example-weighted mean loss across batches (and across clients).
A no-arg function returning a list of tf.keras.metrics.Metrics
to evaluate the model. The metrics will be applied to the model's outputs
during the evaluation stage. Final metric values are the example-weighted
mean of metric values across batches (and across clients). If None, no
metrics are applied.
A reconstruction_utils.DatasetSplitFn taking in a single
TF dataset and producing two TF datasets. The first is iterated over
during reconstruction, and the second is iterated over during evaluation.
This can be used to preprocess datasets to e.g. iterate over them for
multiple epochs or use disjoint data for reconstruction and evaluation. If
None, split client data in half for each user, using one half for
reconstruction and the other for evaluation. See
reconstruction_utils.build_dataset_split_fn for options.
A tff.templates.MeasuredProcess that broadcasts the
model weights on the server to the clients. It must support the signature
(input_values@SERVER -> output_values@CLIENT) and have empty state. If
set to default None, the server model is broadcast to the clients using
the default tff.federated_broadcast.
if broadcast_process does not have the expected signature or
has non-empty state.
A tff.Computation that accepts global model parameters and federated data
and returns example-weighted evaluation loss and metrics.