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.shapepiuttosto 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. lensi sta svolgendo da qualche parte nella libreria TensorFlow. Ho aggiornato la domanda per maggiori dettagli.
env? Dove stalensuccedendo? O fa parte dei callback?