问题描述
我是联邦学习的新手,我尝试实现了FL for Image Classification的代码,但是我看不懂这行
我对一些细节部分感到困惑。我正在尝试在 Keras 中构建一个顺序模型,但是当我训练模型时,出现此错误,我该如何解决?
请指导我 谢谢。
iterative_process = tff.learning.build_federated_averaging_process(model_fn)
TypeError Traceback (most recent call last)
<ipython-input-50-0fdb188570d0> in <module>()
----> 1 iterative_process = tff.learning.build_federated_averaging_process(model_fn)
TypeError: build_federated_averaging_process() missing 1 required positional argument: 'client_optimizer_fn'
解决方法
这是来自 python 的关于函数调用的错误,请参阅 this answer and question 以了解类似情况。
tff.learning.build_federated_averaging_process
的 API 文档表明需要两个参数:model_fn
参数和 client_optimizer_fn
。
从代码来看,好像只指定了第一个参数。上面的 colab 笔记本链接指向旧版本的 TFF(0.12.0
,最新版本是 0.19.0
)。较新版本的 PIP 包不保证旧版本的 colab 笔记本。
在 newer colab notebook version 中,调用已更新以匹配当前 API 并包含其他参数:
iterative_process = tff.learning.build_federated_averaging_process(
model_fn,client_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=0.02),server_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=1.0))