与DP FedAvg联合的TensorFlow中的每个示例剪辑

与DP FedAvg联合的TensorFlow中的每个示例剪辑,tensorflow,tensorflow2.0,tensorflow-federated,Tensorflow,Tensorflow2.0,Tensorflow Federated,我试图使用EMNIST数据集训练一个差异私有的联邦模型,我将DP查询附加到aggregation\u过程。此外,我使用SGD作为客户端和服务器优化器,将服务器学习率设置为1,从而与DP-FedAvg算法类似 查询是: dp_query = tff.utils.build_dp_query( clip=0.6 noise_multiplier=1.2, expected_total_weight=100, adaptive_clip_learning_rate=0,

我试图使用EMNIST数据集训练一个差异私有的联邦模型,我将
DP查询
附加到
aggregation\u过程
。此外,我使用
SGD
作为客户端和服务器优化器,将服务器学习率设置为1,从而与
DP-FedAvg
算法类似

查询是:

dp_query = tff.utils.build_dp_query(
    clip=0.6
    noise_multiplier=1.2,
    expected_total_weight=100,
    adaptive_clip_learning_rate=0,
    target_unclipped_quantile=0.5,
    clipped_count_budget_allocation=0.1,
    expected_clients_per_round=100
)

此查询执行哪种类型的剪裁,是批剪裁还是按示例剪裁

TFP
中,使用每个示例剪辑的选项是将
num_microbatches
设置为
None
,因此默认为
batch_大小


如何在联邦设置中执行类似操作,并在批处理剪裁和每个示例剪裁之间切换?

DPQuery只指定如何剪裁,而不指定剪裁的内容。在联合上下文中,整个客户端更新都被剪裁。可以说,每个客户端的更新功能类似于集中式(非联邦)上下文中的微批处理。这提供了强大的“用户级”DP保证。将客户端分组为“客户端微批次”不会有太大用处。

您可能需要查看
tff.aggregators.differentilyprivateFactory.gaussian\u fixed
,这是一种使用您正在使用的选项构建聚合过程的更简单方法。