tff.aggregators.ClippingFactory

AggregationProcessFactory for clipping large values.

Inherits From: AggregationProcessFactory

The created tff.templates.AggregationProcess projects the values onto an L2 ball (also referred to as "clipping") with norm determined by the provided clipping_norm, before aggregating the values as specified by inner_agg_factory.

The provided clipping_norm can either be a constant (for fixed norm), or an instance of tff.templates.EstimationProcess (for adaptive norm). If it is an estimation process, the value returned by its report method will be used as the clipping norm. Its next method needs to accept a scalar float32 at clients, corresponding to the norm of value being aggregated. The process can thus adaptively determine the clipping norm based on the set of aggregated values. For example if a tff.aggregators.PrivateQuantileEstimationProcess is used, the clip will be an estimate of a quantile of the norms of the values being aggregated.

clipping_norm Either a float (for fixed norm) or an EstimationProcess (for adaptive norm) that specifies the norm over which the values should be clipped.
inner_agg_factory A factory specifying the type of aggregation to be done after clipping.

Methods

create

View source

Creates a tff.aggregators.AggregationProcess aggregating value_type.

The provided value_type is a non-federated tff.Type object, that is, value_type.is_federated() should return False. Provided value_type must be a tff.TensorType or a tff.StructType.

The returned tff.aggregators.AggregationProcess will be created for aggregation of values matching value_type. That is, its next method will expect type <S@SERVER, {value_type}@CLIENTS, *>, where S is the unplaced return type of its initialize method, and * stands for optional additional placed input arguments.

Args
value_type A tff.Type without placement.

Returns
A tff.templates.AggregationProcess.