Vai*_*ine 4 amazon-ec2 keras recurrent-neural-network
我正在使用 aws ec2 为多标签分类任务训练模型。训练后,我在同一台机器上测试了模型,结果很好(准确度为 90+%)。但是,当我将保存的模型导入本地机器(没有 GPU)后,它给出了不同的结果(准确度小于 5%)。关于为什么会发生这种情况的任何建议?谢谢。
TL;DR:当从 GPU机器转移到 CPU时,Keras/tensorflow模型会产生不同的结果。
上网查了一下,发现问题所在。似乎在 GPU 上运行时,张量流上的 keras 往往会产生转移到非 GPU 机器时无法重现的结果。这很可能与安装的 cuDNN 有关。cuDNN 的 maxpooling 和一些卷积向后算法是不确定的 - 正如论坛所说。
我发现的解决方案说numpy.random.seed(seed_no)在调用任何 keras 库之前使用right。当您在 CPU 上运行代码时,这会起作用。适用于keras/theano和keras/tensorflow。
针对在 theano 上使用 keras 的GPU 用户的解决方案涉及将 .theanorc 文件修改为:
[dnn.conv]
algo_bwd_filter = deterministic
algo_bwd_data = deterministic
Run Code Online (Sandbox Code Playgroud)
或者使用 theano 标志:THEANO_FLAGS="dnn.conv.algo_bwd_filter=deterministic,dnn.conv.algo_bwd_data=deterministic" python rnn_model.py
但是,我还没有找到任何关于如何在 keras 上以 tensorflow 作为后端在 GPU 上运行的统一结果的明确说明。
| 归档时间: |
|
| 查看次数: |
2353 次 |
| 最近记录: |