J'essaie d'implémenter un modèle DQL sur un jeu de gym openAI. Mais cela me donne l'erreur suivante.
TypeError: len n'est pas bien défini pour les tenseurs symboliques. (activation_3 / Identité: 0) Veuillez appeler
x.shape
plutôt quelen(x)
pour obtenir des informations sur la forme.
Créer un environnement de gym:
ENV_NAME = 'CartPole-v0'
env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
Mon modèle ressemble à ceci:
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(16))
model.add(Activation('relu'))
model.add(Dense(nb_actions))
model.add(Activation('linear'))
print(model.summary())
Ajustement de ce modèle au modèle DQN de keral-rl comme suit:
policy = EpsGreedyQPolicy()
memory = SequentialMemory(limit=50000, window_length=1)
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
dqn.compile(Adam(lr=1e-3), metrics=['mse', 'mae'])
dqn.fit(env, nb_steps=5000, visualize=False, verbose=3)
L'erreur vient de cette ligne:
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
J'utilise keras-rl == 0.4.2 et tensorflow == 2.1.0. Sur la base d'autres réponses, j'ai également essayé tensorflow == 2.0.0-beta0 mais cela ne résout pas l'erreur.
Quelqu'un peut-il m'expliquer pourquoi je fais face à cette erreur? et comment le résoudre?
Je vous remercie.
env
est un environnement de jeu de gym pour l'entraînement du modèle RL. len
se déroule quelque part dans la bibliothèque TensorFlow. J'ai mis à jour la question pour plus de détails.
env
? Oùlen
se déroule-t-il? Ou cela fait-il partie des rappels?