View source on GitHub
|
A process that includes an initialization and iterated computation.
tff.templates.IterativeProcess(
initialize_fn: tff.Computation,
next_fn: tff.Computation,
next_is_multi_arg: Optional[bool] = None
)
Used in the notebooks
| Used in the tutorials |
|---|
An iterated process will usually be driven by a control loop like:
def initialize_fn():
...
def next_fn(state):
...
iterative_process = IterativeProcess(initialize_fn, next_fn)
state = iterative_process.initialize()
for round in range(num_rounds):
state = iterative_process.next(state)
The initialize_fn function must return an object which is expected as input
to and returned by the next_fn function. By convention, we refer to this
object as state.
The iteration step (next_fn function) can accept arguments in addition to
state (which must be the first argument), and return additional arguments,
with state being the first output argument:
def next_fn(state, round_num):
...
iterative_process = ...
state = iterative_process.initialize()
for round in range(num_rounds):
state, output = iterative_process.next(state, round)
Args | |
|---|---|
initialize_fn
|
A no-arg tff.Computation that returns the initial state
of the iterative 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 a type that is assignable from the state
type S (tff.types.Type.is_assignable_from must return True). The
first or only return value must also be assignable to the first or only
argument, the 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.
|
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.
|
View source on GitHub