Keras-rl2 错误 AttributeError: 'Sequential' 对象没有属性 '_compile_time_distribution_strategy'。

4
我在使用以下代码时,遇到了这个错误:AttributeError: 'Sequential' object has no attribute '_compile_time_distribution_strategy',这是与keras-rl2有关的问题。
我已经搜索了整个互联网,但是没有找到解决方案。
import gym
import tensorflow
print("Import Done")

env = gym.make("CartPole-v0")
states = env.observation_space.shape[0]
print(env.observation_space.shape)
actions = env.action_space.n
print(actions)

print(states)

print(env.observation_space)
print(env.action_space)



def build_model(nstates, nactions):
    model = tensorflow.keras.models.Sequential()
    model.add(tensorflow.keras.layers.Flatten(input_shape=(1, states)))
    model.add(tensorflow.keras.layers.Dense(24, activation='relu'))
    model.add(tensorflow.keras.layers.Dense(24, activation='relu'))
    model.add(tensorflow.keras.layers.Dense(actions, activation='linear'))
    return model


model = build_model(states, actions)
# print(model.summary())

from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory


def build_agent(model, actions):
    policy = BoltzmannQPolicy()
    memory = SequentialMemory(limit=50000, window_length=1)
    dqn = DQNAgent(model=model, memory=memory, policy=policy, nb_actions=actions, nb_steps_warmup=10,
                   target_model_update=1e-2)
    return dqn


dqn = build_agent(model, actions)
dqn.compile(tensorflow.keras.optimizers.Adam(learning_rate=1e-3), metrics=['mae'])
dqn.fit(env, nb_steps=50000, visualize=False, verbose=1)

完整的错误信息如下
Traceback (most recent call last):
  File "D:\Python Project\reinforceMent_Leran\main.py", line 64, in <module>
    dqn.compile(tensorflow.keras.optimizers.Adam(learning_rate=1e-3), metrics=['mae'])
  File "D:\Python Project\rl_learn\lib\site-packages\rl\agents\dqn.py", line 167, in compile
    self.target_model = clone_model(self.model, self.custom_model_objects)
  File "D:\Python Project\rl_learn\lib\site-packages\rl\util.py", line 16, in clone_model
    clone.set_weights(model.get_weights())
  File "D:\Python Project\rl_learn\lib\site-packages\tensorflow\python\keras\engine\training_v1.py", line 175, in get_weights
    self._compile_time_distribution_strategy)
AttributeError: 'Sequential' object has no attribute '_compile_time_distribution_strategy'

看起来你在混合使用Keras和TensorFlow Keras API,请查看类似的问题https://dev59.com/kVIH5IYBdhLWcg3wXc9R#59894775 - user11530462
2个回答

8

当你构建模型然后之后从 rl.* 导入时,会发生这种情况。

将顺序反过来,它就可以正常工作:

from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory

model = build_model(states, actions)
# print(model.summary())

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接