Ich versuche, ein DQL-Modell für ein Spiel von openAI Gym zu implementieren. Aber es gibt mir folgenden Fehler.
TypeError: len ist für symbolische Tensoren nicht gut definiert. (Aktivierung_3 / Identität: 0) Bitte
x.shape
eher anrufen alslen(x)
Informationen zur Form zu erhalten.
Erstellen einer Fitnessumgebung:
ENV_NAME = 'CartPole-v0'
env = gym.make(ENV_NAME)
np.random.seed(123)
env.seed(123)
nb_actions = env.action_space.n
Mein Modell sieht so aus:
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())
Anpassen dieses Modells an das DQN-Modell von keral-rl wie folgt:
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)
Der Fehler stammt aus dieser Zeile:
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=0.001, policy=policy)
Ich benutze keras-rl == 0.4.2 und tensorflow == 2.1.0. Basierend auf anderen Antworten habe ich auch Tensorflow == 2.0.0-beta0 ausprobiert, aber es löst den Fehler nicht.
Kann mir bitte jemand erklären, warum ich mit diesem Fehler konfrontiert bin? und wie man es löst?
Vielen Dank.
env
ist eine Fitness-Spielumgebung zum Trainieren des RL-Modells. len
findet irgendwo in der TensorFlow-Bibliothek statt. Ich habe die Frage für weitere Details aktualisiert.
env
? Wo findet daslen
statt? Oder ist es Teil der Rückrufe?