tff.learning.templates.DistributionProcess
Stay organized with collections
Save and categorize content based on your preferences.
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 .
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2024-09-20 UTC.
[null,null,["Last updated 2024-09-20 UTC."],[],[],null,["# tff.learning.templates.DistributionProcess\n\n\u003cbr /\u003e\n\n|-------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [View source on GitHub](https://github.com/tensorflow/federated/blob/v0.87.0 Version 2.0, January 2004 Licensed under the Apache License, Version 2.0 (the) |\n\nA stateful process that distributes values.\n\nInherits From: [`MeasuredProcess`](../../../tff/templates/MeasuredProcess), [`IterativeProcess`](../../../tff/templates/IterativeProcess) \n\n tff.learning.templates.DistributionProcess(\n initialize_fn, next_fn\n )\n\nA `DistributionProcess` is a [`tff.templates.MeasuredProcess`](../../../tff/templates/MeasuredProcess) that formalizes\nthe type signature of `initialize_fn` and `next_fn` for distribution.\n\nThe `initialize_fn` and `next_fn` must have the following type signatures: \n\n - initialize_fn: ( -\u003e S@SERVER)\n - next_fn: (\u003cS@SERVER, U@SERVER\u003e -\u003e\n \u003cstate=S@SERVER, result=V@CLIENTS, measurements=M@SERVER\u003e)\n\n`DistributionProcess` requires `next_fn` with a second input argument, which\nis a value placed at `SERVER` and to be distributed to `CLIENTS`.\n\nThe `result` field of the returned [`tff.templates.MeasuredProcessOutput`](../../../tff/templates/MeasuredProcessOutput) must\nbe placed at `CLIENTS`. Its type singature, `U'`, need not be the same as the\ntype signature of the second input argument, `U`. Note these will be\nequivalent for a number of implementations of this process, though.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Args ---- ||\n|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `initialize_fn` | A no-arg [`tff.Computation`](../../../tff/Computation) that returns the initial state of the measured process. Let the type of this state be called `S`. |\n| `next_fn` | A [`tff.Computation`](../../../tff/Computation) that represents the iterated function. The first or only argument must be assignable from ( [`tff.types.Type.is_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). |\n| `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. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Raises ------ ||\n|-----------------------------------------|----------------------------------------------------------------------------------------------------------------------------|\n| `TypeError` | If `initialize_fn` and `next_fn` are not instances of [`tff.Computation`](../../../tff/Computation). |\n| `TemplateInitFnParamNotEmptyError` | If `initialize_fn` has any input arguments. |\n| `TemplateStateNotAssignableError` | If the `state` returned by either `initialize_fn` or `next_fn` is not assignable to the first input argument of `next_fn`. |\n| `TemplateNotMeasuredProcessOutputError` | If `next_fn` does not return a `MeasuredProcessOutput`. |\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| Attributes ---------- ||\n|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| `initialize` | A no-arg [`tff.Computation`](../../../tff/Computation) that returns the initial state. |\n| `next` | A [`tff.Computation`](../../../tff/Computation) that produces the next state. \u003cbr /\u003e Its first argument should always be the current state (originally produced by [`tff.templates.IterativeProcess.initialize`](../../../tff/templates/IterativeProcess#initialize)), and the first (or only) returned value is the updated state. |\n| `state_type` | The [`tff.Type`](../../../tff/types/Type) of the state of the process. |\n\n\u003cbr /\u003e"]]