Мне хотелось немного углубиться в усиленное обучение, поэтому я начал с довольно простого примера «Cartpole», следуя практическому руководству.
Ссылка на исходный код руководства на Github (идентична моей)
/>К сожалению, я застрял с одной и той же ошибкой в течение двух дней и не могу найти аналогичную проблему/решение на основе TypeError. В сообщении об ошибке говорится следующее:
*Файл «C:\Users\Felix\Dropbox\Pendelcart.py», строка 40, в dqn = build_agent(model, action)
Файл «C:\Users\Felix\Dropbox\Pendelcart.py», строка 29, в build_agent dqn = DQNAgent(model=model, Memory=memory, policy=policy, nb_actions =actions,< /p>
Файл «C:\Users\Felix\AppData\Roaming\Python\Python38\site-packages\rl\agents\dqn.py», строка 108, в init if hasattr(model. вывод, 'len') и len(model.output) > 1:
Файл "C:\Users\Felix\AppData\Roaming\Python\Python38\site-packages\tensorflow\ python\keras\engine\keras_tensor.py", строка 240, в len поднять TypeError('Символические входы/выходы Keras не выполняются '
TypeError: символические входы/выходы Keras не реализуются < strong>len. Возможно, вы пытаетесь передать символические входные/выходные данные Keras в API TF, который не регистрирует диспетчеризацию, что не позволяет Keras автоматически преобразовать вызов API в лямбда-слой в функциональной модели. получите повышение, если попытаетесь напрямую подтвердить символический ввод/вывод.*
Я искренне надеюсь, что кто-нибудь здесь сможет мне помочь. Я работаю с Pyhton 3.8, Tensorflow 2.4.0 и Keras 2.4.3. Полный исходный код прилагается ниже.
Заранее спасибо и счастливых праздников.
import gym
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten
from tensorflow.keras.optimizers import Adam
from rl.agents import DQNAgent
from rl.policy import BoltzmannQPolicy
from rl.memory import SequentialMemory
def build_model(states, actions):
model = Sequential()
# model.add(Input(shape=(1,states)))
model.add(Flatten(input_shape=(1,states)))
model.add(Dense(24,activation='relu'))
model.add(Dense(24,activation='relu'))
model.add(Dense(actions,activation='linear'))
return model
def build_agent(model,actions):
policy = BoltzmannQPolicy()
memory = SequentialMemory(limit = 50000, window_length=1)
dqn = DQNAgent(model=model, memory=memory, policy=policy, nb_actions =actions,
nb_steps_warmup=10, target_model_update=1e-2)
return dqn
env = gym.make('CartPole-v0')
states = env.observation_space.shape[0]
actions = env.action_space.n
model = build_model(states, actions)
model.summary()
dqn = build_agent(model, actions)
dqn.compile(Adam(lr=1e-3), metrics=['mae'])
dqn.fit(env, nb_steps=50000, visualize= False, verbose=1)
Подробнее здесь: https://stackoverflow.com/questions/653 ... wn-problem