【问题标题】:Keras LSTM layers in Keras-rlKeras-rl 中的 Keras LSTM 层
【发布时间】:2020-01-22 14:22:21
【问题描述】:

我正在尝试使用 Keras-rl 实现 DQN 代理。问题是当我定义我的模型时,我需要在架构中使用 LSTM 层:

model = Sequential()
model.add(Flatten(input_shape=(1, 8000)))
model.add(Reshape(target_shape=(200, 40)))
model.add(LSTM(20))
model.add(Dense(3, activation='softmax'))
return model

执行 rl-agent 我得到以下错误:

RuntimeError: Attempting to capture an EagerTensor without building a function.

这与LSTM的使用和以下代码行有关:

tf.compat.v1.disable_eager_execution()

使用 Dense 层而不是 LSTM:

model = Sequential()
model.add(Flatten(input_shape=(1, 8000)))
model.add(Dense(20))
model.add(Dense(3, activation='softmax'))
return model

并保持禁用急切执行我没有以前报告的错误。如果我删除禁用 LSTM 层的急切执行,我会遇到其他错误。

谁能帮我理解错误的原因?

【问题讨论】:

    标签: keras tensorflow2.0 reinforcement-learning keras-rl


    【解决方案1】:

    keras-rl 库没有明确支持 TensorFlow 2.0,因此它不适用于此类版本的 TensorFlow。该库更新很少,最后一个版本大约有 2 年的历史(从 2018 年开始),所以如果你想使用它,你应该使用 TensorFlow 1.x

    【讨论】:

      【解决方案2】:

      从 github 安装 keras-rl2 支持 tensorflow 2.x

      【讨论】:

        【解决方案3】:

        虽然可以将 keras-rl 的代码迁移到使用 Eager Execution 并因此使用 LSTM。 LSTM 需要用一整集的学习来更新,以证明 keras-rl 不支持的东西是准确的。在此处查看更多信息:https://github.com/keras-rl/keras-rl/issues/41

        【讨论】:

          猜你喜欢
          • 2018-01-25
          • 2019-03-12
          • 2020-05-06
          • 2019-03-26
          • 2018-02-27
          • 2018-07-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多