Estoy tratando de implementar un modelo DQL en un juego de gimnasio openAI. Pero me está dando el siguiente error.
TypeError: len no está bien definido para los tensores simbólicos. (activación_3 / Identidad: 0) Llame en
x.shape
lugar delen(x)
para obtener información sobre la forma.
Crear un ambiente de gimnasio:
ENV_NAME = 'CartPole-v0'
env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
Mi modelo se ve así:
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())
Ajuste de ese modelo al modelo DQN de keral-rl de la siguiente manera:
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)
El error es de esta línea:
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
Estoy usando keras-rl == 0.4.2 y tensorflow == 2.1.0. Basado en otras respuestas, también probé tensorflow == 2.0.0-beta0 pero no resuelve el error.
¿Alguien puede explicarme por qué me enfrento a este error? ¿Y como resolverlo?
Gracias.
env
es un entorno de juego de gimnasia para entrenar el modelo RL. len
está teniendo lugar en algún lugar de la biblioteca TensorFlow. He actualizado la pregunta para más detalles.
env
? ¿Dónde estálen
teniendo lugar? ¿O es parte de las devoluciones de llamada?