You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow2.5下用keras-rl2训练DDPG报FailedPreconditionError如何解决

问题解决方案

报错的核心原因是keras-rl2 1.0.5版本内部实现仍沿用TF1.x的静态图逻辑,DDPG智能体自动生成的目标Actor、目标Critic网络的变量未完成初始化。TensorFlow 2.x将1.x版本的全局变量初始化方法迁移到了compat.v1兼容包下,并非完全移除,可按以下步骤解决:

  • 第一步:代码开头禁用eager执行
    keras-rl2底层依赖TF1静态图逻辑,TF2默认开启的eager执行会导致变量同步异常,在导入tensorflow后添加如下代码:
import tensorflow as tf
tf.compat.v1.disable_eager_execution()
  • 第二步:在智能体编译完成后、训练启动前手动初始化全局变量
    你之前查到的tf.global_variables_initializer()方法在TF2中迁移到了兼容模块下,直接调用即可,代码放在ddpgAgent.compile(...)之后、ddpgAgent.fit(...)之前:
sess = tf.compat.v1.keras.backend.get_session()
sess.run(tf.compat.v1.global_variables_initializer())
  • 可选兜底操作:手动同步目标网络权重
    如果执行完上述两步仍然报错,可手动将原网络的权重赋值给DDPG的目标网络,确保目标网络变量完成初始化,代码放在初始化全局变量之后即可:
ddpgAgent.target_actor.set_weights(ddpgAgent.actor.get_weights())
ddpgAgent.target_critic.set_weights(ddpgAgent.critic.get_weights())

你遇到的Model.state_updates警告是keras-rl2的内部实现遗留问题,不影响训练正常运行,可通过添加import warnings; warnings.filterwarnings("ignore")屏蔽对应警告。

内容的提问来源于stack exchange,提问作者KnownUnknown

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.17 12:45:02