我正在从事强化学习任务,并决定使用 keras NN 模型进行 Q 值逼近。这种方法很常见:在每个动作之后,奖励都存储在内存重放数组中,然后我从中抽取随机样本,并用新数据拟合模型state-action => reward+predicted_Q
(更多细节在这里)。为了进行训练,必须为训练集中的每个项目预测 Q 值。
脚本运行非常缓慢,所以我开始调查。Profiling 显示 56,87% 的累积时间是由_predict_loop方法占用的: 而且看起来很奇怪,因为预测只是一种单向传播。只是一组数字的一次乘法。我使用的模型非常简单:8 个输入,隐藏层上的 5 个节点,1 个输出。
我已经安装并配置了 CUDA,运行了几个示例测试,它显示使用了 GPU,我也可以看到 GPU 的巨大负载。当我运行我的代码时 - 有一条消息:“使用 gpu 设备 0:GeForce GT 730”但我可以看到GPU 负载非常低(大约 10%)。
预测功能需要这么多时间是否正常?有没有办法使用 GPU 进行这种计算?