tensorflow-federated - TFF:如何拆分每个客户端的数据
问题描述
为什么在联邦学习任务中,我们不将数据集拆分为训练、测试和验证,我们只进行训练和测试。
解决方案
如何拆分数据集的选择实际上取决于评估者以及他们想要完成的任务。TFF 中的预处理数据集(来自tff.simulation.datasets
)通常只分成两部分,但它们可以以任何所需的方式重新加入和再次分割。
需要考虑的一件事:(至少)有两个维度对于联邦学习来说可能很有趣。
- 示例:将单个客户端的数据集拆分为训练、测试和验证。这可能被视为最类似于集中培训制度。大多数 TFF 数据集都使用它。
- users:将用户拆分为训练、测试和保留用户在联邦制中可能特别有趣。这可能能够回答全局模型对看不见的用户的泛化程度,但可能会受到各个数据集和拆分的非独立性的严重影响。这在一些 TFF 提供的数据集中使用。
此外,这两者都可以是基于时间的(如果有时间的概念),例如将每个客户数据集分成“前一天”(训练)和“第二天”(测试)。或者,正如跨设备 FL 在实践中经常出现的情况,按一天中的时间划分(晚上可用于训练的用户可能与中午不同),Eichner 2019使用此设置进行了一些实验。
注意:tff.simulation.datasets.stackoverflow.load_data
确实有三个名为train
和held_out
的拆分test
。请仔细阅读文档,因为它使用了上述两种拆分类型。
推荐阅读
- powershell - 我们可以远程连接到不同虚拟网络的 Azure VM
- css - 为什么我的 CSS 自定义样式表规则在 SAPUI5 中被覆盖而不应用?
- angular - 如何以角度切换 mat-icon?
- php - 狮身人面像搜索返回空
- php - 在关联数组中插入一个新数组
- c++ - 我们想要自动创建 operator@ 的可变参数模板,它存在于每个模板变量中
- c++ - 使用 FTDI 和 ReadFile 进行串行通信的延迟
- php - Laravel 日期格式,包含在日期和月份之间
- amazon-web-services - 远程 Hive 元存储:Spark 连接到本地安装而不是远程元存储
- json - 如何使用来自示例 1 的 JSON 响应中的值作为 JMeter 中的示例 3 请求正文