Lyy838354973

Results 11 comments of Lyy838354973

> > 是的,确实像您所说我所构建数据分布是non-IID且不平衡的。很大概率会导致某次反向传播出现了nan数值。是否可以在聚合时加上判断,来消除这类错误。 > > 可以的,我在下个版本中加上自动消除nan的可选项 请问这个问题已经更新了吗

> > > > 是的,确实像您所说我所构建数据分布是non-IID且不平衡的。很大概率会导致某次反向传播出现了nan数值。是否可以在聚合时加上判断,来消除这类错误。 > > > > > > > > > 可以的,我在下个版本中加上自动消除nan的可选项 > > > > > > 请问这个问题已经更新了吗 > > 你好,已经在新版中更新了,具体位置在flgo.algorithm.fedbase.BasicServer.aggregate中增加了nan的检测 请问,我在用服务器远程跑的时候经常进程会卡死不懂,这个问题您清楚吗

> > > > > > 是的,确实像您所说我所构建数据分布是non-IID且不平衡的。很大概率会导致某次反向传播出现了nan数值。是否可以在聚合时加上判断,来消除这类错误。 > > > > > > > > > > > > > > > 可以的,我在下个版本中加上自动消除nan的可选项 > > > > > > >...

![1696246903689](https://github.com/WwZzz/easyFL/assets/116259417/1980322f-c0f5-4d78-99fe-c5f3a8924569) `class Server(flgo.algorithm.fedbase.BasicServer): def initialize(self, *args, **kwargs): # 频率fi self.fi = [1] * len(self.clients) self.entropy = [0] * len(self.clients) self.xuhao_client = [i for i in range(self.num_clients)] self.losses_befor = [self.clients[cid].test(self.model)['loss'] for...

``` class Server(flgo.algorithm.fedbase.BasicServer): def initialize(self, *args, **kwargs): # 频率fi self.fi = [1] * len(self.clients) self.entropy = [0] * len(self.clients) self.xuhao_client = [i for i in range(self.num_clients)] self.losses_befor = [self.clients[cid].test(self.model)['loss'] for...

你好,我还想请问我是否可以获得不进行模型传输的客户端的模型参数,我将如何调用以得到所有客户端每轮训练后的模型参数

> > 你好,我还想请问我是否可以获得不进行模型传输的客户端的模型参数,我将如何调用以得到所有客户端每轮训练后的模型参数 > > 你好,默认的实现为用户本地训练后不保存训练好的模型,以防止过多的内存\显存占用;若要不传输就访问,则需要在打包发送之前在本地保存训练好的模型self.local_model=model,然后服务器可以通过self.clients[i].local_model来访问 请问能设置每个客户端上本地数据的数据量吗

> > 类 DiversityPartitioner(BasicPartitioner):“”“'根据特定属性(例如标签)的类型数量对原始数据集中的样本索引进行分区。这种划分方式被联邦学习中的现有工作广泛使用。 > > ``` > > Args: > > num_clients (int, optional): the number of clients > > diversity (float, optional): the ratio of locally owned types...

> > 定义一开始的客户端,然后在需要新的客户端加入时,再进行数据的分配,并将其加入训练过程,如果目前不能实现的话,我是否能 > > 你好,1)目前数据集的分配不能够动态地进行,每个task生成后用户的数据分布就是固定的了,这种设置也比较贴合实际情形;2)另一方面我不明确你所描述的波动的客户端的具体含义;如果是指部分用户对于服务器在训练早期不可见,而后期训练过程中动态加入的话,可以在Simulator中通过设置用户的活跃性实现,比如分别设置每个用户活跃的起点轮数,即从某一轮开始后变成始终活跃;这样服务器通过available_clients属性可以访问每一轮活跃的用户,从而无法在早期接触到没加入的用户;如果指的是服务器主动增添新的客户端的话,我认为可以不对用户做修改,通过设置服务器的行为实现相同的效果,比如一开始只与self.clients中的前10个用户交互,后面逐步扩充交互用户的规模 集合波动性就是可用的客户可能在不同的时间发生变化,并且可能有新的客户加入培训。我所设想的理想情况是能够在初始化是先设定一批客户端,在随后的训练过程需要有新的客户端集加入时,独立的进行数据分配并将其加入系统中,如果现在没有办法解决,我会考虑您所说的解决方案,您也可以考虑一下这方面的代码,我认为以后的联邦学习可能也会从波动性入手

![1695124692243](https://github.com/WwZzz/easyFL/assets/116259417/70cfee48-ad5a-4a86-8f2f-bfe8cf8d061d) 请问我设置了self.roundwise_fixed_availability = True,为什么每轮可用设备还随着被选择客户端数量减少