WwZzz / easyFL

An experimental platform for federated learning.
Apache License 2.0
519 stars 88 forks source link

中央服务器发送给每个本地客户端的数据不一样,要怎么用这个框架实现呀,谢谢🙏 #34

Open Aston-zeal opened 1 year ago

Aston-zeal commented 1 year ago

我看了涉及到通信相关的函数,是communicate()和communicate_with()函数,不知道要怎么改,感觉这两个函数,中央服务器只能统一发送一致的数据给每个本地客户端,感觉不能根据不同的客户端发送不同的数据,请问能实现中央服务器发送给每个本地客户端的数据不一样吗

Aston-zeal commented 1 year ago

也特别感谢作者能开源这个框架,我用下来感觉很方便

WwZzz commented 1 year ago

你好,服务器的communicate_with函数接收参数package,这个package由BasicServer.pack函数生成。pack函数接受参数client_id,然后返回一个字典变量。因此,服务器可以在pack函数内部根据client_id为用户生成定制化的包裹(字典)。

Aston-zeal commented 1 year ago

你好,服务器的communicate_with函数接收参数package,这个package由BasicServer.pack函数生成。pack函数接受参数client_id,然后返回一个字典变量。因此,服务器可以在pack函数内部根据client_id为用户生成定制化的包裹(字典)。

多谢回答,我早上也注意到可以在pack函数里根据不同的客户端ID来实现了,那我如果要修改每个客户端的训练数据,是不是可以在get_batch_data这个函数里实现修改训练数据,比如数据增强之类

WwZzz commented 1 year ago

数据增强的话在get_batch_data里做可能会比较麻烦?数据增强是对feature的随机变换,在train函数里得到数据后,这时候对feature应用transform代码量可能会比较少;另一方面也可以直接在initialize函数里修改数据集本身,即self.train_data,写一个数据增强类来封装一下

Aston-zeal commented 1 year ago

数据增强的话在get_batch_data里做可能会比较麻烦?数据增强是对feature的随机变换,在train函数里得到数据后,这时候对feature应用transform代码量可能会比较少;另一方面也可以直接在initialize函数里修改数据集本身,即self.train_data,写一个数据增强类来封装一下

我懂了,多谢🙏

Aston-zeal commented 1 year ago

这是个很不错的轻量级现成的联邦学习框架