0

我是联邦学习的新手,我尝试实现 FL 的图像分类代码,但我无法理解这一行

我对一些细节部分感到困惑。我正在尝试在 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'

https://colab.research.google.com/github/tensorflow/federated/blob/v0.12.0/docs/tutorials/federated_learning_for_image_classification.ipynb#scrollTo=sk6mjOfycX5N

4

1 回答 1

3

这是来自 python 的关于函数调用的错误,请参阅此答案和问题以了解类似情况。

的 API 文档tff.learning.build_federated_averaging_process表明需要两个参数:一个model_fn参数和一个client_optimizer_fn.

从代码来看,似乎只指定了第一个参数。上面的 colab notebook 链接指向旧版本的 TFF(0.12.0,最近的是0.19.0)。较新版本的 PIP 包不保证旧版本的 colab 笔记本。

较新的 colab 笔记本版本中,调用已更新为匹配当前 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))
于 2021-06-19T17:09:27.240 回答