【问题标题】:Strange mxnet behavior in R: results not reproducibleR中奇怪的mxnet行为:结果不可重现
【发布时间】:2018-05-02 09:54:00
【问题描述】:

mxnet 是否将数据/模型存储在 R 之外的某个地方?我经常遇到这样的场景:一天中的第一次 NN 运行会产生良好的结果,而接下来的每次运行(即使是完全相同的代码)都会为所有训练步骤产生 NA/NaN。

示例:https://github.com/xup6fup/MxNetR-examples/blob/master/1.%20Basic%20models/3.%20softmax%20regression/1.%20Standard%20example.R

我按原样复制并粘贴了代码,运行它并获得了大约 70% 的准确度。我注意到设备设置为 cpu,并且我编译了 gpu 版本。所以我把它改成了gpu,重新运行......所有的NaN。清除 R 会话工作区,用 cpu 重新运行原始代码,全部 NA。

重新启动 Rstudio 服务器,重新运行确切的代码.... 全部不适用。似乎有些东西存储在 rstudio 服务器之外,它会干扰后续的前馈。我在多个 mxnet 教程中遇到了这个问题,它们通常第一次可以工作,但随后会失败,即使运行相同的代码也是如此。

【问题讨论】:

  • 你确定你没有不小心存储了一些错误的模型(第 50 行)并每次都读回来(第 54 行)?
  • 这是一个很好的建议,但我还没有跑到代码的那一行,只是到第 44 行。在摆弄了一下之后,似乎重新启动实例或 rstudio,重置了一些允许nn 运行。使用 rstudio 'clear session workspace' 一定会错过一些干扰后续 nn 运行的东西。
  • 不,又丢了。重新启动实例或 rstudio 仍会导致 NaN 训练。我知道它在某处保存了一些东西......
  • 仅清除工作区只会清除 R 变量。 MXNet 是一个本地库,它将模型存储在 R 变量之外(比如说,在 GPU 上),因此它的所有内部状态确实都保存在“R 之外”。但这并不能解释为什么它在重新启动整个 RStudio 进程后不起作用——这应该会破坏实际上没有保存在永久存储中的所有内容,例如在文件系统上。
  • 除非 Rstudio 将 MXNet 数据保存到工作区,然后每次都加载 rstudio。如何清除 mxnet 的内部状态?似乎非常违反直觉,需要在 R 之外/

标签: r neural-network rstudio-server mxnet


【解决方案1】:

如果库是在 2017 年 11 月 12 日之前在某处编译的,那么随机初始化中存在一段时间的错误,导致初始化权重几乎全为 0。

【讨论】:

  • 我在 10 月底编译了我的,但它是 AWS 深度学习附带的预装版本。我需要比 0.12.0 更新的版本吗? 'git clone --recursive github.com/apache/incubator-mxnet.git.'获取最新版本?我想我可以在基础 AMI mxnet 版本中安装它
  • 该错误出现在 0.11.1 中,但仅在 0.12.1 左右得到解决。要验证这是否是问题,请尝试:mx.runif(shape=2:3)。如果都接近0,那么你需要按照官方说明重新编译。你上面的命令是正确获取最新版本的。
  • 你说得对,我正在运行 0.12.0,尽管 mx.runif(shape=2:3) 不会在矩阵中返回任何 0。我尝试删除 mxnet 并克隆 0.12.1,但尝试构建 R 包将我拖回了缺少 LID lib 变量的 linux 泥潭,这在第一次安装时会耗费 50 多个小时。
猜你喜欢
  • 2020-08-12
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 2022-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多