Sto cercando di implementare un modello DQL su un gioco di palestra openAI. Ma mi sta dando il seguente errore.
TypeError: len non è ben definito per i tensori simbolici. (Activation_3 / Identità: 0) Si prega di chiamare
x.shape
piuttosto chelen(x)
per informazioni sulla forma.
Creare un ambiente palestra:
ENV_NAME = 'CartPole-v0'
env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
Il mio modello è simile al seguente:
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())
Montando quel modello sul modello DQN da keral-rl come segue:
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'errore proviene da questa riga:
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
Sto usando keras-rl == 0.4.2 e tensorflow == 2.1.0. Sulla base di altre risposte, ho anche provato tensorflow == 2.0.0-beta0 ma non risolve l'errore.
Qualcuno può spiegarmi perché sto affrontando questo errore? e come risolverlo?
Grazie.
env
è un ambiente di gioco in palestra per l'allenamento del modello RL. len
si sta svolgendo da qualche parte nella libreria TensorFlow. Ho aggiornato la domanda per maggiori dettagli.
env
? Dove stalen
succedendo? O fa parte dei callback?