问题标签 [federated-learning]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
machine-learning - 如何建立不平衡和小数据集的联邦学习模型
我正在使用 TFF 构建联邦学习模型,但我有一些问题:
我正在准备数据集,我有单独的数据文件,具有相同的特征和不同的样本。我会将这些文件中的每一个都视为一个客户端。我如何在 TFF 中维护它?
数据不平衡,这意味着每个文件的数据大小不同。这会影响建模过程吗?
数据量有点小,一个文件(客户端)有300条记录,另一个有1500条记录,是否适合建立联邦学习模型?
提前致谢
deep-learning - MNIST 分片描述符:IndexError:列表索引超出范围
我正在使用英特尔 OpenFL 进行联合学习实验。我想使用不同的非同一性场景分发我的数据集 (MNIST)。我正在关注他们的官方文档:https ://openfl.readthedocs.io/en/latest/source/utilities/splitters_data.html
这是我原来的工作代码:
基本上,我以这种方式在我的两个联邦节点中更改了 MnistShardDescriptor 类:
我在该行有此错误train_idx
:IndexError: list index out of range
但仅在 2 个节点之一中。我不知道为什么,因为我的联邦的两个节点上的代码完全相同。
编辑:我更改了上面编写的代码的位置,特别是我在 MnistShardDataset 类而不是 MnistShardDescriptor 中编写:
有了这个,我就可以创建联邦,并且在 director 的同一个节点中,客户端开始训练,并且拆分是真正随机的,因为我运行了 2 次实验,并且每次 envoy 有不同数量的样本。然而,在另一个节点(因为我使用 2 个节点,每个特使一个)和特使(openFL 调用特使客户端上的工作人员)我有索引超出范围的相同错误......</p>
EDIT2:这是使用 openFL 进行数据拆分的示例:https ://github.com/intel/openfl/blob/develop/openfl-tutorials/interactive_api/PyTorch_Kvasir_UNet/envoy/kvasir_shard_descriptor_with_data_splitter.py
但是我的数据集不同,我没有成功调整这个解决方案。关于 MNIST 之类的数据集分片,您可以向我推荐任何其他示例吗?要遵循的教程?
整个错误:
编辑:有趣的一点:如果我改变我的联邦的维度,将 envoy_config.yaml 中的 rank_worldsize 从 2 增加到 3,训练开始(并且数据集以随机方式划分,所以它可以工作,因为每个节点都有不同的数字样品)。但是它之所以有效,只是因为我有 2 个节点,但我创建了一个没有 3 个节点的 3 个联合。实际上,一个节点的样本为 8064,另一个节点的样本为 9856。但是考虑到我在 MNIST 中有 60000 个训练样本,所有剩余的样本都丢失了,因为它们应该在最后一个节点中(不存在)。
python - 使用 create_tf_dataset_for_client() 定义数据集中的训练样例
我正在为联合设置准备一个数据集,在下面的代码中,我有多个 CSV 文件,并且使用的每个文件都被视为一个客户端。
我想访问数据,以便确定features
andlabel
列。所以我输入:
由于我的数据量很大,所以行数更多
所以我可以访问这些数据,因为它们是张量对象,
问题1 我如何说明这一点DataFrame.iloc[1:-1] #Features
,DataFrame.iloc[:-1] #Label
问题 2如何将每个文件拆分为训练和测试集以开始训练过程?
python - 随着时间的推移,我的自定义损失函数会逐渐减慢训练速度
我有一个自定义损失函数,用于实现 fedprox 算法
该函数包装了提供给模型的实际损失函数。
我在同一台机器上运行连续的训练(每个会话代表一个独立的客户端),但每次运行训练都会显着变慢。
我尝试了默认损失,除非我使用自定义损失函数,否则我没有这个问题。
什么可能导致这种放缓?