首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras-rl ValueError“模型有多个输出,DQN期望模型有一个输出”

Keras-rl ValueError“模型有多个输出,DQN期望模型有一个输出”
EN

Stack Overflow用户
提问于 2022-06-09 17:24:23
回答 1查看 71关注 0票数 0

有什么办法可以避免这个错误吗?我有一个具有15x15输入网格的模型,这将导致两个输出。每个输出有15个可能的值,它们是x或y坐标。我这么做是因为它比网格上的每个位置都有225个单独的输出要简单得多。问题是,当我尝试使用以下代码来训练模型时:

代码语言:javascript
复制
def build_agent(model,actions)
  policy = BoltzmannQPolicy()
  memory = SequentialMemory(limit=100000, window_length=1)
  dqn = DQNAgent(model=model, memory=memory,policy=policy,nb_actions=actions,nb_steps_warmup=100, target_model_update=1e-2)
  return(dqn)
dqn = build_agent(model, np.array([15,15]))
dqn.compile(Adam(learning_rate = 0.01), metrics=['mae'])
dqn.fit(env, nb_steps=10000, action_repetition=1, visualize=False, verbose=1,nb_max_episode_steps=10000)
plt.show()

我得到了一个错误:"Model有多个输出,DQN期望一个模型有一个输出“。模型摘要在下面,因此您可以看到有两个输出层。

代码语言:javascript
复制
Model: "model_1"
__________________________________________________________________________________________________
 Layer (type)                   Output Shape         Param #     Connected to                     
==================================================================================================
 input_2 (InputLayer)           [(None, 1, 15, 15)]  0           []                               
                                                                                                  
 conv2d_2 (Conv2D)              (None, 12, 13, 13)   120         ['input_2[0][0]']                
                                                                                                  
 conv2d_3 (Conv2D)              (None, 10, 11, 3)    354         ['conv2d_2[0][0]']               
                                                                                                  
 flatten_1 (Flatten)            (None, 330)          0           ['conv2d_3[0][0]']               
                                                                                                  
 dropout_1 (Dropout)            (None, 330)          0           ['flatten_1[0][0]']              
                                                                                                  
 dense_2 (Dense)                (None, 15)           4965        ['dropout_1[0][0]']              
                                                                                                  
 dense_3 (Dense)                (None, 15)           4965        ['dropout_1[0][0]']              
                                                                                                  
==================================================================================================
Total params: 10,404
Trainable params: 10,404
Non-trainable params: 0
__________________________________________________________________________________________________

标准Keras允许使用functional具有多个输出的模型,但是从errpr消息来看,我假设Keras不支持这个特性?如果是真的,有什么办法可以绕过这个问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-05 16:40:54

解决方案是,我只需要使用225的一个输出。这不是很好,但这是我能找到的最好的。两个不同的输出不能使用keras-rl,所以我只能想到这一点。另一种可能是使用不同的库,如稳定的baselines2,但这与已经构建的代码完全不同。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72564316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档