首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras-RL集在拟合模型后返回相同值

Keras-RL集在拟合模型后返回相同值
EN

Stack Overflow用户
提问于 2018-07-25 16:18:08
回答 1查看 1.5K关注 0票数 0

因此,我创建了一个使用OpenAI健身房的定制环境。我正在密切关注DQNAgent的keras-rl示例中的CartPole示例,这将导致以下实现:

代码语言:javascript
复制
nb_actions = env.action_space.n

# Option 1 : Simple model
model = Sequential()
model.add(Flatten(input_shape=(1,) + env.observation_space.shape))
model.add(Dense(nb_actions))
model.add(Activation('linear'))

# Next, we build a very simple model. 
#model = Sequential() 
#model.add(Flatten(input_shape=(1,) + env.observation_space.shape)) 
#model.add(Dense(16)) 
#model.add(Activation('relu')) 
#model.add(Dense(16)) 
#model.add(Activation('relu')) 
#model.add(Dense(16)) 
#model.add(Activation('relu')) 
#model.add(Dense(nb_actions, activation='linear')) 
#model.add(Activation('linear'))

# Finally, we configure and compile our agent. You can use every built-in Keras optimizer and # even the metrics! 

memory = SequentialMemory(limit=50000, window_length=1) 
policy = BoltzmannQPolicy() 
dqn = DQNAgent(model=model, nb_actions=nb_actions, memory=memory, nb_steps_warmup=10, target_model_update=1e-2, policy=policy) 

dqn.compile(Adam(lr=1e-3), metrics=['mae']) 

# Okay, now it's time to learn something! We visualize the training here for show, but this # slows down training quite a lot. You can always safely abort the training prematurely using # Ctrl + C. 

dqn.fit(env, nb_steps=2500, visualize=False, verbose=2) 

# After training is done, we save the final weights. 

dqn.save_weights('dqn_{}_weights.h5f'.format(ENV_NAME), overwrite=True) 

# Finally, evaluate our algorithm for 5 episodes. 

dqn.test(env, nb_episodes=10, visualize=False)

因此,在dqn.test函数调用之前,一切看起来都与我所期望的一样。来自dqn.fit的示例输出如下:

1912/2500:剧集: 8,持续时间: 1.713s,情节步骤: 239,每秒步骤: 139,情节奖励:-78.774,平均奖励:-0.330 -27928.576,18038.443,平均动作: 0.657 0.000,2.000,平均观察: 8825.907 5947.400,17211.920,损失: 7792970.500000,mean_absolute_error: 2.000,mean_q

2151/2500:第9集,持续时间:1.79秒,第239集,每秒步骤: 134,情节奖励:-23335.055,平均奖励:-97.636 -17918.534,17819.400,平均动作: 0.636 0.000,2.000,平均观察: 8825.907 5947.400,17211.920,损失: 8051206.500000,mean_absolute_error: 8051206.500000,mean_q: 1.000000

2390/2500:第10集,持续时间:1.775秒,第239集,每秒步骤: 135,情节奖励: 16940.150,平均奖励: 70.879 -25552.948,17819.400,平均动作: 0.611 0.000,2.000,平均观察: 8825.907 5947.400,17211.920,损失: 8520963.000000,mean_absolute_error: 8520963.000000,mean_q: 1.000000

由于不同的奖励是不同的,它似乎在我看来,是符合预期的工作。但是,当运行dqn.test方法时,它会为每一集生成相同的输出。在我使用的数据中,负面的奖励是坏的,积极的奖励是好的。

下面是正在运行的测试方法的结果:

测试10集

  • 第1集:奖励:-62996.100,步骤: 239
  • 第二集:奖励:-62996.100,步骤: 239
  • 第3集:奖励:-62996.100,步骤: 239
  • 第4集:奖励:-62996.100,步骤: 239
  • 第5集:奖励:-62996.100,步骤: 239
  • 第6集:奖励:-62996.100,步骤: 239
  • 第7集:奖励:-62996.100,步骤: 239
  • 第8集:奖励:-62996.100,步骤: 239
  • 第9集:奖励:-62996.100,步骤: 239
  • 第10集:奖励:-62996.100,步骤: 239

这就引出了两个问题:

1)为什么每集的奖励是相同的?

2)为什么模型会推荐一套能带来可怕回报的行动?

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 13:52:41

我会检查env对象,看看它是否已经有了奖励计算。

我想知道.fit函数是否出于某种原因没有探索状态空间。

我最近做了一个RL项目(月球着陆器)与开放的人工智能健身房和Keras,虽然我没有使用DQN代理和其他Keras内置的RL材料。我只是建立了一个简单的网络。检查这个GitHub链接,看看它是否有用?https://github.com/tianchuliang/techblog/tree/master/OpenAIGym

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

https://stackoverflow.com/questions/51523528

复制
相关文章

相似问题

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