【问题标题】:Why I create a Non-IID data set like the FedAvg in paper of McMahan but test accuracy of this data set is just only 0.5?为什么我在 McMahan 的论文中创建了一个像 FedAvg 这样的非 IID 数据集,但该数据集的测试准确度仅为 0.5?
【发布时间】:2020-04-15 00:35:21
【问题描述】:

我创建了一个非 IID 数据集,其中我将 60000 个示例(10 个类,每个类有 6000 个示例)划分为 200 个片段,每个片段有 300 个示例。有 100 个客户端,我随机分配 2 个片段给每个客户端。这是一些客户的情况。 the situation of some clients

我使用这个数据集来训练我的 TFF 模型。训练集的准确率约为 0.99,而测试集的准确率仅为 0.5 左右。我尝试了很多次,但没有改变。 而且我认为该模型可能过度拟合,因此我添加了两个 dropout 进行测试,但我得到了相同的结果。然后我将 relu() 函数更改为leakyrelu(),并将优化器函数从 SGD 更改为 Adam,但准确度也在 0.5 左右。我不知道为什么。我知道非 IID 会导致准确性下降,而 FedAvg 可以缓解它。 TFF 使用 FedAvg 来聚合客户端模型,这意味着我已经使用 FedAvg 作为我的底层结构,对吗?但为什么我的准确率这么低?

【问题讨论】:

  • 你能给我们更多的细节吗!!代码sn-p

标签: python tensorflow imbalanced-data tensorflow-federated


【解决方案1】:

客户端和服务器优化器的学习率对于确定模型的最终准确性非常重要。

非常高的客户端学习率会导致训练准确度很高,因为客户端本地训练过程过度拟合客户端本地数据(在合成拆分中创建的两个类)。然而,这些过拟合模型可以平均到对 global 模型的很少更新。在这里降低客户端学习率可能会有所帮助。

Reddi 2020 中发现,如果在服务器上使用自适应优化器(例如 Adam/Yogi),则需要调整 epsilon 参数以获得最佳性能。为 SGD 添加动量也显着提高了收敛速度。

【讨论】:

    猜你喜欢
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 2017-02-22
    • 2017-08-12
    • 2015-11-13
    • 2015-02-16
    • 1970-01-01
    相关资源
    最近更新 更多