|  View source on GitHub | 
Builds a new iterative process which constructs datasets on clients.
tff.simulation.compose_dataset_computation_with_iterative_process(
    dataset_computation: tff.Computation,
    process: tff.templates.IterativeProcess
) -> tff.templates.IterativeProcess
Used in the notebooks
| Used in the tutorials | 
|---|
Given a tff.Computation that returns a tf.data.Dataset, and a
tff.templates.IterativeProcess where exactly one of the arguments is a
dataset placed on clients of the same type as returned by the
tff.Computation, this function will construct a new
tff.templates.IterativeProcess whose next function accepts a federated set
of values of the same type as the parameter of the dataset_computation, maps
dataset_computation over these values, and proceeds with the body of
process.next.
For example, if the type signature of dataset_computation is:
(T -> U*)
and the type signature of process.next is:
(<S, {U*}@CLIENTS> -> <S, V>
then the returned tff.templates.IterativeProcess.next type signature will
be:
(<S, {T}@CLIENTS> -> <S, V>)
This functionality is useful in several settings:
- We may want to push some dataset preprocessing to happen on the clients, as opposed to preprocessing happening on the TFF simultation controller. This may be necessary, e.g., in the case that we want to shuffle client examples.
- We may want to construct the entire dataset on the clients, given a client id. This may be useful in order to speed up distributed simulations, in order to remove a linear cost incurred in constructing and serializign the datasets on the controller.
| Args | |
|---|---|
| dataset_computation | An instance of tff.Computationwhich accepts some
parameter and returns an element oftff.SequenceType. | 
| process | An instance of tff.templates.IterativeProcesswhose next function
accepts exactly one federated dataset, IE, element of type{B*}@CLIENTS,
whereBis equivalent to the return type ofdataset_computation. | 
| Returns | |
|---|---|
| A new tff.templates.IterativeProcesssatisfying the specification above. | 
| Raises | |
|---|---|
| TypeError | If the arguments are of the wrong types, or their TFF type signatures are incompatible with the specification of this function. |