联邦学习:保护隐私的分布式训练

FreeGuideOnline 最新 2026-07-03

python

client.py (使用 Flower)

import flwr as fl import torch

定义本地模型结构

class Net(torch.nn.Module): ...

Flower 客户端类

class FlowerClient(fl.client.NumPyClient): def get_parameters(self, config): # 返回模型参数(NumPy 数组) return [val.cpu().numpy() for val in model.state_dict().values()]

def set_parameters(self, parameters):
    # 加载服务器发送的全局参数
    params_dict = zip(model.state_dict().keys(), parameters)
    state_dict = OrderedDict({k: torch.tensor(v) for k, v in params_dict})
    model.load_state_dict(state_dict, strict=True)

def fit(self, parameters, config):
    self.set_parameters(parameters)
    # 本地训练......
    return self.get_parameters(config={}), len(train_loader), {}

def evaluate(self, parameters, config):
    self.set_parameters(parameters)
    # 本地评估......
    return loss, len(val_loader), {"accuracy": accuracy}

启动客户端

fl.client.start_numpy_client(server_address="[::]:8080", client=FlowerClient())