首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >my联邦学习模型的精度分析

my联邦学习模型的精度分析
EN

Stack Overflow用户
提问于 2022-04-29 18:42:31
回答 1查看 101关注 0票数 0

在分析联邦学习模型的准确性时,我发现我的客户的准确性正在提高,但我的全局精度并不高。有人能帮我解决这个问题吗?我正在粘贴的图像,显示全球的准确性和损失,每一个时代的准确性和损失。

我提到了我用来寻找全局准确性和损失的代码。

代码语言:javascript
复制
cce = tf.keras.losses.mean_squared_error
y_pred=model.predict(X_test,batch_size=32)
loss = cce(Y_test, y_pred)
y_pred=[0 if val<0.5 else 1 for val in y_pred]
acc = accuracy_score(Y_test,y_pred)
loss=loss.numpy()
loss1=sum(loss) / len(loss)
print('comm_round: {} | global_acc: {:.3%} | global_loss: {}'.format(communication_round, acc, loss1))

此外,我还提到了我在每一轮中都用于查找客户端的准确性的代码。

代码语言:javascript
复制
local_model.compile(loss='mean_squared_error', optimizer=optimizer, metrics=['accuracy'])

有人能帮助我的问题,为什么客户的准确性和全球准确性在我的模型有这么大的差异。即使在我的代码运行了500轮之后,我的客户的准确率仍在94%左右,而全球的准确率则在61%左右。

EN

回答 1

Stack Overflow用户

发布于 2022-09-02 09:38:15

我认为你需要定义你的定制评估策略。策略是决定服务器如何聚合新权重、如何评估客户端等的类。最基本的策略是FedAvg (用于联邦平均值),我认为您正在使用该策略。在最后一轮之后,server将与所有可用的客户端一起执行最后的评估步骤,以验证模型的性能。在现实生活中,这不会是个问题,但这实际上可能会适得其反。您只需要在服务器端执行评估,并从客户端删除此功能。这是通过策略的evaluate方法完成的,您需要重写该方法:

您可以在这里阅读更多关于创建自己的FL算法的内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72062438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档