【发布时间】:2018-05-02 09:54:00
【问题描述】:
mxnet 是否将数据/模型存储在 R 之外的某个地方?我经常遇到这样的场景:一天中的第一次 NN 运行会产生良好的结果,而接下来的每次运行(即使是完全相同的代码)都会为所有训练步骤产生 NA/NaN。
我按原样复制并粘贴了代码,运行它并获得了大约 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