colab 中图像分类的联邦学习

问题描述

我是联邦学习的新手,我尝试实现了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'

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

解决方法

这是来自 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))

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...