M: Model {
shape: class
- apply_model_update(StatisticsType)`根据给定的统计量计算模型更新,既可以构造一个新模型返回,也可以直接原地修改`: Tuple\[ModelType, Metrics\]
}
EM: EvaluatableModel {
shape: class
- evaluate(dataset \.\.\.)`根据给定的数据集计算评估指标,可以是来自设备的数据集也可以是一个集中式的数据集`: Metrics
}
M -> EM
SM: StatefulModel {
shape: class
- get_model_difference(): StatisticsType
- set_parameters(): None
}
EM -> SM
StatefulModel:
一个有固定参数量的有状态模型的实现
在这个场景下的本地训练分为四步:
- 备份现有的(中心)参数 (
get_parameters
) - 利用用户数据训练模型
- 计算现有的模型和备份的模型之间的差异 (
get_model_difference
) - 恢复到备份状态 (
set_parameters
).