【发布时间】:2017-07-15 22:25:46
【问题描述】:
我正在使用 aws ec2 为多标签分类任务训练模型。训练后,我在同一台机器上测试了模型,结果很好(准确率 90+%)。但是,在我将保存的模型导入本地机器(无 GPU)后,它会给出不同的结果(准确率小于 5%)。关于为什么会发生这种情况的任何建议?谢谢。
TL;DR:Keras/tensorflow 模型在 从 GPU 机器转移到 CPU 时会产生不同的结果。
【问题讨论】:
-
那么你用什么数据训练你的模型,这取决于如何对其进行编程。
-
我正在处理文本数据(推文)。我根据他们表达的情绪(快乐、悲伤、愤怒等)对它们进行分类。我在张量流上使用 keras。我的网络是一个顺序模型(嵌入层-> 双向 LSTM-> sigmoid 密集层)。我正在使用 binary_crossentropy (因为我想有多个 0/1 情绪输出)和 rmsprop 用于优化器。它在 aws 中运行良好,但在我的本地机器上却不行。
-
我已经将本地机器上的 keras 和 tensorflow 版本更改为与 aws 中相同的版本。现在唯一的区别是我在笔记本电脑上使用 CPU 版本,而 aws ec2 使用 gpu。但是,与 aws 相比,我本地机器中的输出仍然倾向于提供非常不同的输出。
-
你应该提供代码和你得到的结果,否则这个问题是完全无法回答的。
-
@MatiasValdenegro 先生,我的代码基于 Alexander Rakhlin 爵士发布的 github code。我将其修改为使用 RNN 来代替多种情绪输出。我在 aws ec2 机器上获得了 90% 以上的准确率,而在没有 GPU 的笔记本电脑上只有 5% 的准确率。我对这种行为进行了一些搜索,发现原因是 GPU 机器上使用的 cuDNN 产生了使模型随机化的不确定值。我通过一些链接发布了我找到的解决方案。
标签: amazon-ec2 keras recurrent-neural-network