尝试在 Mac M1 上运行带有 RL 代理的
gym
环境。
import gym
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
from rl.agents import DQNAgent
运行此程序时,最后一行出现错误:
ImportError: cannot import name 'model_from_config' from 'tensorflow.keras.models' (/Users/username/miniforge3/envs/rl_gym/lib/python3.12/site-packages/keras/_tf_keras/keras/models/__init__.py). Did you mean: 'model_from_json'?
这是
Sonoma 14.4.1
。大多数其他讨论(例如这个link)建议重新安装tensorflow和其他软件包。我尝试过,但没有成功。错误仍然存在。这是在 conda 环境中,我有 keras-3.2.1
、tensorflow-2.16.1
和 keras-rl2-1.0.5
。我这里错了什么?
TensorFlow 2.16 默认使用 Keras 3,其 API 与 Keras 2 略有不同。请参阅 TensorFlow 2.16 的发行说明:
Keras 3 将是 TensorFlow 2.16 及以上版本的默认 Keras 版本。 您可能需要更新脚本才能使用 Keras 3。请参阅 Keras 3 的新 Keras 文档 (https://keras.io/keras_3)。喀拉斯 2 将继续与 TensorFlow 一起作为 tf_keras 发布。到 继续将 Keras 2 与 TensorFlow 2.16+ 结合使用:
因此,tf.keras API 也发生了变化,部分功能不再可用。如果您比较 TF 2.15 中的 tf.keras.models 模块的文档 和 TF 2.16 中的 ,您会发现一些序列化函数已被删除。 解决方案是将您的 TensorFlow 版本降级到 2.15,这是与您正在使用的
keras-rl
库兼容的最新版本。
model_from_config
。 降级到任何旧版本的 TensorFlow,它都会正常工作