运行TensorFlow Federated官方文档示例代码遇AttributeError问题咨询
TensorFlow Federated代码运行错误排查
问题描述
尝试运行TensorFlow官方文档中的TensorFlow Federated(TFF)示例代码,代码如下:
import tensorflow as tf import tensorflow_federated as tff training_process = tff.learning.algorithms.build_weighted_fed_avg(get_dense_nn, client_optimizer_fn=lambda: tf.keras.Sequential.SGD(learning_rate=client_lr), server_optimizer_fn=lambda:tf.keras.optimizers.SGD(learning_rate=server_lr))
运行时出现错误:
AttributeError: module 'tensorflow_federated.python.learning' has no attribute 'from_keras_model'
请问是操作有误还是文档存在问题?
原因分析与解决方案
版本不匹配问题:这个错误核心原因是你安装的TFF版本和参考的官方文档版本不一致。
tff.learning.from_keras_model是旧版TFF的API,在新版本中已被重构或移除;而你代码里用的tff.learning.algorithms.build_weighted_fed_avg是新版API,说明你装的是新版TFF,但你的get_dense_nn函数内部大概率还在调用旧版的from_keras_model,导致冲突。具体修正方案:
- 若保留新版TFF:将
get_dense_nn中的模型构建逻辑改为使用tff.learning.models.from_keras_model(注意API路径的变化),或者直接基于tff.learning.models.VariableModel接口定义模型。 - 若匹配文档旧版本:卸载当前TFF,安装文档标注的对应旧版本(例如
tensorflow-federated==0.20.0这类指定版本)。
- 若保留新版TFF:将
另外,你贴出的代码里还有一处语法错误:tf.keras.Sequential.SGD应该改为tf.keras.optimizers.SGD,也需要同步修正。
内容的提问来源于stack exchange,提问作者Temitope
相关产品推荐
相关产品推荐

