【问题标题】:Capsule Network and reproducibly胶囊网络和可重复性
【发布时间】:2019-10-23 20:51:40
【问题描述】:

我目前在使用 Capsule Network(Keras 版本:CapsNet)时遇到困难。

每次我连续运行超过 2-5 个预测时(在循环中),结果都会有很大差异。我试图改变这么多的事情。我也将优化器从 ADAM 更改为 SGD - 但我根本无法使其 100 % 稳定,从而能够再次重现给定的运行。

如何使 CapsNet 每次运行都 100% 可重现?

【问题讨论】:

  • 欢迎来到 SO!当您提出问题时,请尝试添加最少的内容:输入样本、预期输出样本、您尝试了什么、研究以及您卡在哪里。你尝试了什么?向我们展示...

标签: python machine-learning keras deep-learning


【解决方案1】:

这个问题的答案很长而且很复杂。有a blog post that goes into much more detail than I can here,不过我会尽量抓高分。

  1. PYTHONHASHSEED 环境变量设置为0运行您的python 程序之前。
  2. 如果您在 GPU 上运行计算,可能会由于浮点舍入而导致不可重现的结果。您可以通过将CUDA_VISIBLE_DEVICES 环境变量以与以前相同的方式设置为空字符串来禁用它并在 CPU 上运行所有操作。
CUDA_VISIBLE_DEVICES="" PYTHONHASHSEED=0 python your_program.py

【讨论】:

  • 谢谢我的朋友。不幸的是,我已经阅读并尝试了这一点,但它并没有改变任何东西。
  • @PabloDK 在这种情况下,说服自己使用非常简单的网络(例如 Keras “入门”示例之一(keras.io/getting-started/sequential-model-guide )。这可能会建议您探索胶囊网络问题的可能方向。我希望这会有所帮助。
  • 我也试过这个,在 CPU 上运行时,它会产生相同的结果,但只能与 SGD 优化器结合使用。如果我将优化器更改为 ADAM 或从 CPU 切换到 GPU,那么结果会再次发生很大变化 :-( 这真的是现实和标准吗?在我看来这是一个基本问题(一些所有开发人员都会遇到) - 所以再一次,似乎没有更好的选择存在(为了使 gpu + adam 在 100% 可重现方面成为可能)?
  • 另一个建议是在 Google Colab 中使用 Keras 和 Tensorflow 2.0。以下问题在答案部分有一些示例代码,似乎表现良好(至少使用 CPU):stackoverflow.com/a/58310632/7024006 同样,从一个简单的网络开始,替换 SGD,然后是 Adam 等来验证环境。至少如果 Keras/Tensorflow 有一些问题,它会是一个更新的实现。我希望这会有所帮助。
猜你喜欢
  • 1970-01-01
  • 2017-11-03
  • 1970-01-01
  • 2014-01-03
  • 2012-01-25
  • 2020-03-18
  • 2015-07-08
  • 2020-01-01
  • 1970-01-01
相关资源
最近更新 更多