问题描述
在阅读tensorflow federated for image classification 的这篇tutorial时,我发现.repeat()
,我想了解这个预处理函数的必要性,尤其是当我增加{{1}中的数字时},模拟需要很多时间。那么,如果有必要制作.repeat()
,我们可以选择多少个epoch?
解决方法
教程中对 tf.data.Dataset.repeat
的调用不是绝对必要的。它是一个超参数,使客户端执行更多本地优化(通过重复本地数据集采取更多步骤),从而降低通信频率。实际上,每个联合学习“回合”都会取得更多进展,因为客户正在做更多的工作。
不使用任何重复意味着客户只训练一个时期。在本教程中,这可能会导致模型训练看起来更慢(以每轮为基础),并且每轮完成的小批量步骤更少。
大量的 epoch 会产生负面影响。在后面的几轮中,当模型大部分收敛时,如果本地数据与全局数据分布发散,客户可能会对其本地数据进行过拟合。