|  View source on GitHub | 
Aggregation Factory that sums and then finalizes the metrics.
Inherits From: UnweightedAggregationFactory
tff.learning.metrics.SumThenFinalizeFactory(
    metric_finalizers: tff.learning.metrics.MetricFinalizersType,
    initial_unfinalized_metrics: Optional[collections.OrderedDict[str, Any]] = None,
    inner_summation_factory: Optional[tff.aggregators.UnweightedAggregationFactory] = None
)
The created tff.templates.AggregationProcess uses the inner summation
process created by the inner summation factory to sum unfinalized metrics
from tff.CLIENTS to tff.SERVER, accumulates the summed unfinalized metrics
in the state, and then finalize the metrics for both current round and total
rounds. If the inner summation factory is not specified,
tff.aggregators.SumFactory is used by default. The inner summation factory
can also use SecAgg.
The accumulated unfinalized metrics across rounds are initialized to be the intial value of the unfinalized metrics, if the inital value is not specified, zero is used.
The next function of the created tff.templates.AggregationProcess takes
the state and local unfinalized metrics reported from tff.CLIENTS, and
returns a tff.templates.MeasuredProcessOutput object with the following
properties:
- state: a tuple of the- stateof the inner summation process and the accumulated unfinalized metrics across rounds.
- result: a tuple of the finalized metrics of the current round and total rounds.
- measurements: the measurements of the inner summation process.
| Args | |
|---|---|
| metric_finalizers | An collections.OrderedDictof metric names to
finalizers, should have same keys as the unfinalized metrics. A
finalizer is a function (typically atf.functiondecorated callable or
atff.tensorflow.computationdecorated TFF Computation) that takes in
a metric's unfinalized values, and returns the finalized metric values.
This can be obtained fromtff.learning.models.VariableModel.metric_finalizers(). | 
| initial_unfinalized_metrics | Optional. An collections.OrderedDictof
metric names to the initial values of local unfinalized metrics, its
structure should match that oflocal_unfinalized_metrics_type. If not
specified, defaults to zero. | 
| inner_summation_factory | Optional. A tff.aggregators.UnweightedAggregationFactorythat creates atff.templates.AggregationProcessto sum the metrics from clients to
server. If not specified,tff.aggregators.SumFactoryis used. If the
metrics aggregation needs SecAgg,aggregation_factory.SecureSumFactorycan be used as the inner summation factory. | 
| Raises | |
|---|---|
| TypeError | If any argument type mismatches. | 
Methods
create
create(
    local_unfinalized_metrics_type: tff.types.StructWithPythonType
) -> tff.templates.AggregationProcess
Creates a tff.templates.AggregationProcess for metrics aggregation.
| Args | |
|---|---|
| local_unfinalized_metrics_type | A tff.types.StructWithPythonType(withcollections.OrderedDictas the Python container) of a client's local
unfinalized metrics. For example,local_unfinalized_metricscould
represent the output type oftff.learning.models.VariableModel.report_local_unfinalized_metrics(). | 
| Returns | |
|---|---|
| An instance of tff.templates.AggregationProcess. | 
| Raises | |
|---|---|
| TypeError | If any argument type mismatches; if the metric finalizers mismatch the type of local unfinalized metrics; if the initial unfinalized metrics mismatch the type of local unfinalized metrics. |