联邦学习:保护隐私的分布式训练
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())