Source code for fl4health.parameter_exchange.packing_exchanger

from typing import Generic, TypeVar

from flwr.common.typing import NDArrays

from fl4health.parameter_exchange.full_exchanger import FullParameterExchanger
from fl4health.parameter_exchange.parameter_packer import ParameterPacker


T = TypeVar("T")


[docs] class FullParameterExchangerWithPacking(FullParameterExchanger, Generic[T]):
[docs] def __init__(self, parameter_packer: ParameterPacker[T]) -> None: """ Parameter exchanger for when sending the entire set of model weights between the client and server with potential side information packed in as well. Args: parameter_packer (ParameterPacker[T]): Parameter packer used to pack and unpack auxiliary information alongside the model weights. """ super().__init__() self.parameter_packer = parameter_packer
[docs] def pack_parameters(self, model_weights: NDArrays, additional_parameters: T) -> NDArrays: return self.parameter_packer.pack_parameters(model_weights, additional_parameters)
[docs] def unpack_parameters(self, packed_parameters: NDArrays) -> tuple[NDArrays, T]: return self.parameter_packer.unpack_parameters(packed_parameters)