我对代码中出现的错误有疑问。
我尝试使用自定义开放环境和Tensorflow的DQNAgent求解TSP。当我尝试编译代理时,我收到以下错误:
我已经尝试安装keras-rl 2,也没有解决这个问题。
类型错误:回溯(最近调用最后)单元格在[42],第72行70模型。输出71 #创建TSP代理---〉72代理= build_agent(model,action_size)73 #训练代理74 #代理。编译(Adam(lr= 1 e-3),metrics=['mae'])
单元在[42]中,第62行,在build_agent(模型,动作大小)中60内存=顺序内存(限制=50000,窗口长度=1)61 #创建DQN代理---〉62代理= DQNAgent(模型,内存=内存,策略=策略,nb_actions=动作大小,nb_steps_warmup=10,目标_模型_update= 1 e-2)64返回代理
文件c:\用户\fabian.woellenweber\应用数据\本地\程序\Python\Python310\lib\站点包\rl\代理\dqn.py:108,在DQNAgent中。init(自定义,模型,策略,测试策略,启用双dqn,启用决斗网络,决斗类型,* 参数,kwargs)105 super(DQNAgent,自定义)。init( 参数,kwargs)107 #验证(重要)输入。--〉108如果hasattr(模型.输出,'*len')和len(模型.输出)〉1:109 raise ValueError('Model“{}”有多个输出。DQN需要一个只有一个输出的模型。'. format(model))110 if model.output._keras_shape!=(None,self.nb_actions):
文件c:\用户\法比安.沃伦韦伯\应用数据\本地\程序\Python\Python 310\库\站点包\凯拉斯\引擎\凯拉斯Tensor.py:244,在凯拉斯Tensor中。长度(自我)243定义长度*(自我):--〉244引发TypeError(... 251“在功能模型中。如果您试图直接Assert符号输入/输出,此错误也将引发“252“。”253)'
TypeError:Keras符号输入/输出未实现__len__
。您可能正在尝试将Keras符号输入/输出传递到未注册调度的TF API,从而阻止Keras自动将API调用转换为功能模型中的lambda层。如果您尝试直接Assert符号输入/输出,也会引发此错误。“
'
state_size = env.observation_space.n
action_size = env.action_space.n
def build_model(state_size, action_size):
model = tf.keras.Sequential()
model.add(Dense(256, input_dim=state_size, activation='relu'))
model.add(Dense(256, activation='relu'))
model.add(Dense(action_size, activation='linear'))
model.summary()
return model
# Create the TSP agent
def build_agent(model, action_size):
# Use Epsilon-Greedy policy for exploration
policy = BoltzmannQPolicy()
# Create memory for storing transitions
memory = SequentialMemory(limit=50000, window_length=1)
# Create the DQN agent
agent = DQNAgent(model, memory=memory, policy=policy, nb_actions=action_size, nb_steps_warmup=10, target_model_update=1e-2)
return agent
# Create the TSP model
model = build_model(state_size, action_size)
model.output
# Create the TSP agent
agent = build_agent(model, action_size)
# Train the agent
#agent.compile(Adam(lr=1e-3), metrics=['mae'])
1条答案
按热度按时间eqoofvh91#
重新启动Visual Studio代码解决了问题....