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