A post-aggregation computation placed at SERVER.
The second step can be realized by direct application of appropriate intrinsic
such as tff.federated_sum, or by delegation to (one or more) "inner"
Both initialize and next must be tff.Computations with the following
initialize: ( -> S@SERVER)
next: (<S@SERVER, V@CLIENTS, *> ->
<state=S@SERVER, result=V@SERVER, measurements=M@SERVER>)
where * represents optional other arguments placed at CLIENTS.
A no-arg tff.Computation that returns the initial state
of the aggregation process. The returned state must be a server-placed
federated value. Let the type of this state be called S@SERVER.
A tff.Computation that represents the iterated function.
next_fn must accept at least two arguments, the first of which is of
state type S@SERVER and the second of which is client-placed data of
type V@CLIENTS. next_fn must return a MeasuredProcessOutput where
the state attribute matches the type S@SERVER and the result
attribute matches type V@SERVER.
Its first argument should always be the current state (originally produced
by the initialize attribute), the second argument must be the input placed
at CLIENTS, and the return type must be a
tff.templates.MeasuredProcessOutput with each field placed at SERVER.