问题标签 [keras-rl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
8170 浏览

python - 带有 Tensorflow 后端的 Keras - 在 CPU 上运行预测但适合 GPU

我正在使用 keras-rl 使用 D-DQN 算法训练我的网络。我正在 GPU 上运行我的训练,该model.fit_generator()函数允许在 GPU 进行反向传播时将数据发送到 GPU。与 GPU 处理数据的速度相比,我怀疑数据的生成速度太慢了。

在生成数据时,按照 D-DQN 算法的说明,我必须首先用我的模型预测 Q 值,然后将这些值用于反向传播。如果使用 GPU 来运行这些预测,则意味着它们正在破坏我的数据流(我希望反向传播尽可能频繁地运行)。

有没有办法可以指定在哪个设备上运行特定操作?在某种程度上,我可以在 CPU 上运行预测,在 GPU 上运行反向传播。

0 投票
1 回答
1292 浏览

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

所以我使用 OpenAI Gym 创建了一个自定义环境。我正在密切关注 CartPole 示例的 DQNAgent 的 keras-rl 示例,该示例导致以下实现:

所以在 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:653.732361,mean_q:1.000000

2151/2500:剧集:9,持续时间:1.790s,剧集步数: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:676.335266,mean_q:1.000000

2390/2500:剧集:10,持续时间:1.775s,剧集步数: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:690.176819,mean_q:1.000000

由于各种奖励不同,在我看来,配件按预期工作。但是当 dqn.test 方法运行时,它会不断为每一集生成相同的输出。就我使用的数据而言,负奖励是不好的,而正奖励是好的。

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

测试 10 集

  • 第1集:奖励:-62996.100,步数:239
  • 第2集:奖励:-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)为什么模型会推荐一组导致可怕奖励的行动?

0 投票
1 回答
1246 浏览

python - Tensorflow、OpenAI Gym、Keras-rl 在基本强化学习示例中的性能问题

我正在做强化学习,但我遇到了性能问题。

情况,没有自定义代码:

请帮忙!

提前致谢

0 投票
1 回答
3412 浏览

python - ValueError: Input 0 is in compatible with layer conv2d_1: expected ndim=4, found ndim=5

我正在尝试将 RGB 图像从模拟器传递到我的自定义神经网络中。在 RGB 生成源(模拟器),RGB 图像的维度为(3,144,256).

这就是我构建神经网络的方式:

这是我得到的错误:

当我的实际尺寸为 4 时,为什么 keras 抱怨预期尺寸为 5?

PS:我和这个问题有同样的问题。理想情况下,我想对该帖子发表评论,但没有足够的声誉。

编辑:

这是处理错误的代码:

这是我传递时的env.rgb.shapeinput_shape错误Conv2D

0 投票
3 回答
11948 浏览

python - TensorFlow 的打印不打印

我试图从强化学习算法中理解一些代码。为了做到这一点,我试图打印张量的值。

我做了一段简单的代码来说明我的意思。

目标是打印值“2”(-2 的绝对值)。但我只得到以下内容:

没什么,我怎样才能像 print('...') 语句那样打印值 '2' 呢?

0 投票
1 回答
1019 浏览

reinforcement-learning - Gym(openAI)环境动作空间取决于实际状态

我正在使用健身房工具包来创建我自己的环境,并使用 keras-rl 在代理中使用我的环境。问题是我的动作空间发生了变化,这取决于实际状态。例如,我有 46 种可能的动作,但在特定状态下只有 7 种可用,我无法找到对其建模的方法。

我读过这个问题open-ai-enviroment-with-changeing-action-space-after-each-step

但这并没有解决我的问题。

在 Gym Documentation 中没有执行此操作的说明,只有他们的 Github repo 上的一个问题(仍然开放)。我不明白代理(keras-rl,dqn 代理)如何采取行动,是随机选择的吗?但从哪里来?

有人可以帮助我吗?想法?

0 投票
0 回答
238 浏览

python - 将参与者网络输出缩放到 Keras Rl 中的动作空间边界

我正在尝试从 Keras RL 实现 DDPG 并拥有以下参与者网络。

但是,对于我的问题,我更愿意将输出缩放到自定义的健身房环境动作空间范围。env.action_space.

https://pemami4911.github.io/blog/2016/08/21/ddpg-rl.html使用他们使用的 tflearn api 显示了这一点

根据我的要求缩放输出层的等效命令是什么?

0 投票
1 回答
524 浏览

python-3.x - 如何调用 LSTM 函数?

我刚刚开始使用 LSTM 时间序列预测示例。

在最后一步出现以下错误,不确定我在这里缺少什么。任何帮助将不胜感激!.ERROR- NameError: name 'to_list' is not defined

0 投票
0 回答
295 浏览

python - keras_rl DQN 代理 - 所有策略 select_action() func 返回值为 0 或 1

我正在尝试使用 Gym 和 kears_rl 设置强化学习项目。

描述:

给定一个范围内的数字(100, 200),我希望代理在数字接近限制时提醒我,比如说在0%-10%90%-100%位数之间。

报酬:

分位数样本 (0, 0.1),奖励为 (+1)

分位数样本 (0.1, 0.9),奖励为 (-1)

分位数样本 (0.9, 1),奖励为 (+1)

代理需要学习 10% 和 90% 的限值。

main.py 信息:

问题\问题:

在 fit 函数 (rl/core.py:169) 上,我得到的动作为零。它应该在 [100, 200] 之间。这是为什么?我希望该操作在 action_space 内,但我看到所有策略都返回 0 或 1 的值。我想如何在 env.step() 函数中使用该值?

我的代码基于以下示例:

OpenAI-Gym cartpole.py

keras_rl dqn_cartpole.py

OpenAI-Gym hottercolder.py 环境

任何帮助深表感谢。

谢谢。

0 投票
0 回答
368 浏览

deep-learning - 强化学习:为什么重新开始训练后学习的准确率会下降?

我开发了一个小型强化学习练习。问题是重新开始训练后训练的准确性大大下降,我不太明白。

环境: - 我使用 keras rl,一个简单的神经元模型,DQNAgent

我可以准确地测量模型的准确度,所以每走 10k 步后我就进行一次测量。一开始内存是空的,权重都为零。下图显示了前 120 x 10k 步中的准确度

在此处输入图像描述

模型学习到一定程度并保存最佳权重。

现在我不明白的是,当我在休息几天后重新开始训练时,我恢复了权重,但内存又是空的,模型的准确性大幅下降,除此之外,它甚至没有达到以前达到的精度。看下图和开头的大跌幅:在此处输入图像描述

我认为恢复权重后训练的结果不会比以前差很多,但事实并非如此。空的 SequentialMemory 会导致学习/训练下降,并且可能不会导致与以前相同的水平。

有什么提示吗?

干杯,费伦茨