使用tff.learning.Build_federated_evaluation用于多轮



我想用tff.learning.build_federated_evaluation来评估我的联邦学习模型。最初,得到了合理的结果。但是我可以运行多轮评估过程(如在这里完成的培训阶段)以获得更稳定的结果吗?

求值代码如下所示。

train, test = source.train_test_client_split(source, 2,seed=0)
test_client_ids = test.client_ids
test_data= [test.create_tf_dataset_from_all_clients().map(reshape_data)
.batch(batch_size=10)
 for c in test_client_ids]
eval_process=tff.learning.build_federated_evaluation(model_fn)
eval_process(state.model, test_data)

求值输出。

OrderedDict([('eval',
              OrderedDict([('sparse_categorical_accuracy', 0.53447974),
                           ('loss', 1.0230521),
                           ('num_examples', 11514),
                           ('num_batches', 1152)]))])

在同一个test_data上多次运行eval_process不会产生新的信息,并且每次都期望产生相同的结果。这些结果将是稳定的,在某种意义上它们不会改变,但可能并不有趣。

在多轮中运行eval_process,每轮使用不同的test_data可以被认为是从较大的人群中抽样一组客户,以获得模型质量的估计。从多个样本中计算许多估计可以与统计技术一起使用,更多轮导致更稳定模型质量的改进估计。

这大概是在描述后面的聚合服务的1和2中使用的技术。

相关内容

  • 没有找到相关文章

最新更新