问题标签 [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.
python - 带有 Tensorflow 后端的 Keras - 在 CPU 上运行预测但适合 GPU
我正在使用 keras-rl 使用 D-DQN 算法训练我的网络。我正在 GPU 上运行我的训练,该model.fit_generator()
函数允许在 GPU 进行反向传播时将数据发送到 GPU。与 GPU 处理数据的速度相比,我怀疑数据的生成速度太慢了。
在生成数据时,按照 D-DQN 算法的说明,我必须首先用我的模型预测 Q 值,然后将这些值用于反向传播。如果使用 GPU 来运行这些预测,则意味着它们正在破坏我的数据流(我希望反向传播尽可能频繁地运行)。
有没有办法可以指定在哪个设备上运行特定操作?在某种程度上,我可以在 CPU 上运行预测,在 GPU 上运行反向传播。
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)为什么模型会推荐一组导致可怕奖励的行动?
python - Tensorflow、OpenAI Gym、Keras-rl 在基本强化学习示例中的性能问题
我正在做强化学习,但我遇到了性能问题。
情况,没有自定义代码:
- 我在 Google Cloud 上加载了一个 Google 深度学习 VM ( https://console.cloud.google.com/marketplace/details/click-to-deploy-images/deeplearning )。这附带了安装了 NVidia K80 显卡的所有先决条件(CUDA、cuDNN、驱动程序)。
- 安装keras-rl , OpenAI 健身房
- 现在,当我在第 46 行使用 Visualize=False 运行(标准)示例dqn_cartpole.py时,它使用了我大约 20% 的 GPU,导致每秒大约 100 步,这比在我的 Razer Blade 上使用 CPU 慢大约 3 倍15 (i7-8750H)。
- 我检查了我能想到的所有瓶颈,CPU使用率、内存和HD I/O都正常。
请帮忙!
提前致谢
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.shape
新input_shape
错误Conv2D
:
python - TensorFlow 的打印不打印
我试图从强化学习算法中理解一些代码。为了做到这一点,我试图打印张量的值。
我做了一段简单的代码来说明我的意思。
目标是打印值“2”(-2 的绝对值)。但我只得到以下内容:
没什么,我怎样才能像 print('...') 语句那样打印值 '2' 呢?
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 代理)如何采取行动,是随机选择的吗?但从哪里来?
有人可以帮助我吗?想法?
python - 将参与者网络输出缩放到 Keras Rl 中的动作空间边界
我正在尝试从 Keras RL 实现 DDPG 并拥有以下参与者网络。
但是,对于我的问题,我更愿意将输出缩放到自定义的健身房环境动作空间范围。env.action_space
.
https://pemami4911.github.io/blog/2016/08/21/ddpg-rl.html使用他们使用的 tflearn api 显示了这一点
根据我的要求缩放输出层的等效命令是什么?
python-3.x - 如何调用 LSTM 函数?
我刚刚开始使用 LSTM 时间序列预测示例。
在最后一步出现以下错误,不确定我在这里缺少什么。任何帮助将不胜感激!.ERROR- NameError: name 'to_list' is not defined
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() 函数中使用该值?
我的代码基于以下示例:
任何帮助深表感谢。
谢谢。
deep-learning - 强化学习:为什么重新开始训练后学习的准确率会下降?
我开发了一个小型强化学习练习。问题是重新开始训练后训练的准确性大大下降,我不太明白。
环境: - 我使用 keras rl,一个简单的神经元模型,DQNAgent
我可以准确地测量模型的准确度,所以每走 10k 步后我就进行一次测量。一开始内存是空的,权重都为零。下图显示了前 120 x 10k 步中的准确度
模型学习到一定程度并保存最佳权重。
现在我不明白的是,当我在休息几天后重新开始训练时,我恢复了权重,但内存又是空的,模型的准确性大幅下降,除此之外,它甚至没有达到以前达到的精度。看下图和开头的大跌幅:
我认为恢复权重后训练的结果不会比以前差很多,但事实并非如此。空的 SequentialMemory 会导致学习/训练下降,并且可能不会导致与以前相同的水平。
有什么提示吗?
干杯,费伦茨