关于github上联邦学习手写数字识别中的坑

MULTI

MULTI数据集是用于手写数字识别的一个相当著名的数据集,简单入门,是不少人在ai图像识别领域的敲门砖。

FL

联邦学习是一种分布式的机器学习方法,它允许多个参与方共享和学习一个模型,而不需要将原始数据集集中在一个地方。在手写数字识别的场景下,可以将数据集分为多个部分,并分配给多个参与方进行训练。参与方本地训练模型后,可以将模型参数上传到中央服务器进行融合,以更新整体模型。

主要部分如下:

  1. 数据准备
  2. 参与方本地训练
  3. 参数上传
  4. 模型融合
  5. 分发模型
  6. 本地测试
  7. 迭代训练

运行

结合multi数据集和联邦学习,单独的案例具体代码github网址:

GitHub - ZeroWangZY/federated-learning: Everything about Federated Learning (papers, tutorials, etc.) -- 联邦学习

能看到文件都是7 years ago的,所以环境版本和现在差别很大。

socketIO-client 0.7.2,
Flask-SocketIO 4.3.1,
python-engineio 3.13.2,
python-socketio 4.6.0。

以上版本的库可以运行。

运行联邦学习服务端fl_server.py出现端口号127.0.0.1,点击跳转到网页,再运行mnlti_client.py即可看到数据变化。

问题1

报错:RuntimeError: The Werkzeug web server is not designed to run in production. Pass allow_unsafe_werkze

解决方案:ocketio.run() 方法传递 allow_unsafe_werkzeug=True 参数

出处:RuntimeError: The Werkzeug web server is not designed to run in production. Pass allow_unsafe_werkze-CSDN博客

问题2 

报错:"GET /socket.io/?EIO=3&transport=polling&t=1711810525318-0 HTTP/1.1" 400 -

解决方案:客户端文件导入的是socketIO_client库,推测和flask_socketio不兼容。

但这玩意似乎只支持到socketIO1.x协议,并且找到最新的版本也是19年的。

出处:flask 报错 GET /socket.io/?EIO=3&transport=polling&t=(跨域问题?)_flask socketio 跨域-CSDN博客

问题3

报错:cannot import name '_request_ctx_stack' from 'flask'

原因:Flask版本 2.3以上,剔除了_request_ctx_stack。

解决方案:降级Flask,到2.2以下正常工作。

  • 17
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值