Keras-rl 中的 Keras LSTM 层
Keras LSTM layers in Keras-rl
我正在尝试使用 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()
使用密集层而不是 LSTM:
model = Sequential()
model.add(Flatten(input_shape=(1, 8000)))
model.add(Dense(20))
model.add(Dense(3, activation='softmax'))
return model
并保持 eager execution disabled 我没有之前报告的错误。如果我删除禁用 LSTM 层的急切执行,我会遇到其他错误。
任何人都可以帮助我了解错误的原因吗?
keras-rl
库没有对 TensorFlow 2.0 的明确支持,因此它不适用于此类版本的 TensorFlow。该库很少更新,最后一个版本大约有 2 年的历史(从 2018 年开始),所以如果你想使用它,你应该使用 TensorFlow 1.x
尽管可以迁移 keras-rl 的代码以使用即时执行,从而使用 LSTM。 LSTM 需要通过整个学习过程进行更新,以证明 keras-rl 不支持的内容是准确的。在此处查看更多信息:https://github.com/keras-rl/keras-rl/issues/41
从 github 安装 keras-rl2 支持 tensorflow 2.x
我正在尝试使用 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()
使用密集层而不是 LSTM:
model = Sequential()
model.add(Flatten(input_shape=(1, 8000)))
model.add(Dense(20))
model.add(Dense(3, activation='softmax'))
return model
并保持 eager execution disabled 我没有之前报告的错误。如果我删除禁用 LSTM 层的急切执行,我会遇到其他错误。
任何人都可以帮助我了解错误的原因吗?
keras-rl
库没有对 TensorFlow 2.0 的明确支持,因此它不适用于此类版本的 TensorFlow。该库很少更新,最后一个版本大约有 2 年的历史(从 2018 年开始),所以如果你想使用它,你应该使用 TensorFlow 1.x
尽管可以迁移 keras-rl 的代码以使用即时执行,从而使用 LSTM。 LSTM 需要通过整个学习过程进行更新,以证明 keras-rl 不支持的内容是准确的。在此处查看更多信息:https://github.com/keras-rl/keras-rl/issues/41
从 github 安装 keras-rl2 支持 tensorflow 2.x