View source on GitHub |
A stateful process that distributes values.
Inherits From: MeasuredProcess
, IterativeProcess
tff.learning.templates.DistributionProcess(
initialize_fn, next_fn
)
A DistributionProcess
is a tff.templates.MeasuredProcess
that formalizes
the type signature of initialize_fn
and next_fn
for distribution.
The initialize_fn
and next_fn
must have the following type signatures:
- initialize_fn: ( -> S@SERVER)
- next_fn: (<S@SERVER, U@SERVER> ->
<state=S@SERVER, result=V@CLIENTS, measurements=M@SERVER>)
DistributionProcess
requires next_fn
with a second input argument, which
is a value placed at SERVER
and to be distributed to CLIENTS
.
The result
field of the returned tff.templates.MeasuredProcessOutput
must
be placed at CLIENTS
. Its type singature, U'
, need not be the same as the
type signature of the second input argument, U
. Note these will be
equivalent for a number of implementations of this process, though.
Args | |
---|---|
initialize_fn
|
A no-arg tff.Computation that returns the initial state
of the measured process. Let the type of this state be called S .
|
next_fn
|
A tff.Computation that represents the iterated function. The
first or only argument must be assignable from (
tff.types.Type.is_assignable_from must return True ) the state type
S . The return value must be a MeasuredProcessOutput whose state
member is assignable to the first argument (same requirement as the S
type).
|
next_is_multi_arg
|
An optional boolean indicating that next_fn will
receive more than just the state argument (if True ) or only the state
argument (if False ). This parameter is primarily used to provide
better error messages.
|
Raises | |
---|---|
TypeError
|
If initialize_fn and next_fn are not instances of
tff.Computation .
|
TemplateInitFnParamNotEmptyError
|
If initialize_fn has any input
arguments.
|
TemplateStateNotAssignableError
|
If the state returned by either
initialize_fn or next_fn is not assignable to the first input
argument of next_fn .
|
TemplateNotMeasuredProcessOutputError
|
If next_fn does not return a
MeasuredProcessOutput .
|
Attributes | |
---|---|
initialize
|
A no-arg tff.Computation that returns the initial state.
|
next
|
A tff.Computation that produces the next state.
Its first argument should always be the current state (originally produced
by |
state_type
|
The tff.Type of the state of the process.
|