我正在尝试使用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并且保持禁止执行的状态,我没有之前报告的错误。如果我删除了禁用LSTM层的急切执行,我还会遇到其他错误。
有谁能帮我理解错误的原因吗?
发布于 2020-01-23 00:13:58
keras-rl库不明确支持TensorFlow 2.0,因此它不能与该版本的TensorFlow一起工作。该库的更新很少,最新版本大约是2年前(2018年),所以如果你想使用它,你应该使用TensorFlow 1.x
发布于 2020-05-03 19:29:39
从github支持tensorflow 2.x安装keras-rl2
发布于 2020-04-06 21:23:04
尽管可以将keras-rl的代码迁移为使用急切执行,因此也可以使用LSTM。LSTM需要用一整集的学习来证明keras-rl不支持的东西是准确的。点击此处查看更多信息:https://github.com/keras-rl/keras-rl/issues/41
https://stackoverflow.com/questions/59861818
复制相似问题