def __init__(self, env: GameWrapperEnvironment, weight_file=None): """Build a simple DQN model""" BaseAgent.__init__(self, env) nb_actions: int = flatdim(env.action_space) model = Sequential() model.add(Flatten(input_shape=(1, flatdim(env.observation_space)))) model.add(Dense(16)) model.add(Activation("relu")) model.add(Dense(16)) model.add(Activation("relu")) model.add(Dense(16)) model.add(Activation("relu")) model.add(Dense(nb_actions)) model.add(Activation("linear")) print(model.summary()) # Finally, we configure and compile our agent. You can use every built-in Keras optimizer and # even the metrics! memory = SequentialMemory(limit=50000, window_length=1) policy = BoltzmannQPolicy() DQNAgent.__init__( self, model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=1e-2, policy=policy, ) # Ensure we compile an optimizer for target model self.compile(Adam(lr=1e-3), metrics=["mae"]) if weight_file is not None: self.load_weights(weight_file)