python - TypeError : len is not well defined for symbolic Tensors. (activation_3/Identity:0) 请调用 `x.shape` 而不是 `len(x)` 获取形状信息

标签 python tensorflow keras reinforcement-learning keras-rl

我正在尝试在 openAI Gym 的一款游戏上实现 DQL 模型。但它给了我以下错误。

TypeError: len is not well defined for symbolic Tensors. (activation_3/Identity:0) Please call x.shape rather than len(x) for shape information.

创建健身房环境:

ENV_NAME = 'CartPole-v0'

env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n

我的模型如下所示:

model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))
print(model.summary())

将该模型拟合到 keral-rl 中的 DQN 模型,如下所示:

policy = EpsGreedyQPolicy()
memory = SequentialMemory(limit=50000, window_length=1)
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mse', 'mae'])
dqn.fit(env, nb_steps=5000, visualize=False, verbose=3)

错误来自这一行:

dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)

我使用的是keras-rl==0.4.2和tensorflow==2.1.0。根据其他答案,我还尝试了tensorflow==2.0.0-beta0,但它没有解决错误。

有人可以向我解释一下为什么我会遇到这个错误吗?以及如何解决?

谢谢。

最佳答案

此中断的原因是,tf.Tensor TF 2.0.0(和 TF 1.15)重载了 __len__raises an exception 。但例如 TF 1.14 没有 __len__ 属性。

因此,任何 TF 1.15+(含)都会破坏 keras-rl (特别是 here ),从而出现上述错误。所以你有两个选择,

  • 降级到 TF 1.14(推荐)
  • 删除 __len__ TensorFlow 源代码中的重载(不推荐,因为这可能会破坏其他东西)

关于python - TypeError : len is not well defined for symbolic Tensors. (activation_3/Identity:0) 请调用 `x.shape` 而不是 `len(x)` 获取形状信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59682542/

相关文章:

python - 只初始化一次类变量

Python/Plotly 甘特图 : a marker to indicate current date in timeline?

python - KERAS 在 docker 容器中添加第一层时随机卡住

python - "Merge"替换 Keras/Tensorflow/Python3

tensorflow - tf keras SparseCategoricalCrossentropy 和 sparse_categorical_accuracy 在训练期间报告错误值

tensorflow - Keras - 自定义损失函数 - 倒角距离

python - 为什么多处理锁定失败?

python正则表达式匹配整行与特定的正则表达式模式

tensorflow - TF 2.3.0 使用带有样本权重的 tf 数据集训练 keras 模型不适用于指标

tensorflow - Google Colab - 连接到 Google Cloud Storage 几天后未创建 adc.json 文件