1

我使用 ZeroBrane Studio 作为 IDE 来编写深度学习代码。我意识到我在 IDE 中编程时保存的模型(使用 Lua 5.1 作为解释器)在从 Torch7 执行相同的加载时加载不好。当从 torch (./th code.lua) 学习然后尝试在 IDE 中加载它们时也会发生同样的情况。我得到类似的东西:

/opt/zbstudio/bin/linux/x64/lua: /home/dg/torch/install/share/lua/5.1/torch/File.lua:294: unknown object

有人知道如何检查torch 使用的lua 版本吗?关于如何解决这个问题的任何想法?

谢谢!

更新:看来我确实在 Torch 和 ZeroBrane 中使用了相同的 Lua 版本(5.1)。通过torch.load()时,我仍然会得到不同的行为(一个成功,另一个崩溃)。

4

3 回答 3

1

要检查正在运行的 Lua 版本,您通常会打印 _VERSION 它是一个存储 Lua 版本的全局变量(当然,除非你覆盖它)。

print(_VERSION)

如果由于某种原因这不可用,他们可能会在他们的网站上说明他们的版本(?)

于 2015-10-30T11:23:03.300 回答
0

@siffiejoe:感谢您提出有关版本的问题,它为我提供了正确的探索方向。

/opt/zbstudio/bin/linux/x64/lua version is LuaJIT 2.0.2
"lua" command alone points to /usr/bin/lua, and it is Lua 5.1.5
~/torch/install/share/lua/5.1 seemed to contain Lua 5.1
~/torch/install/bin/luajit is 2.1.0-alpha

因此,在意识到终端“th”正在使用 LuaJit 2.1.0 之后,我所要做的就是在 ZeroBrane 中创建一个 user.lua 并添加行“path.lua = “~/torch/install/bin/luajit”。现在 ZB使用与 th 相同的 luajit 解释器。

谢谢大家的建议。

于 2015-11-03T09:51:38.740 回答
0

Linux 上的大多数命令行工具都理解-v命令行开关(用于“版本”)。Lua 和 LuaJIT 也是如此。

要确定哪个解释器正在运行特定脚本,您可以扫描arg表以查找最小(通常为负)索引:

local exe, i = arg[ 0 ], -1
while arg[ i ] do
  exe, i = arg[ i ], i-1
end
print( exe )

或者(在 Linux 上)您可以/proc在脚本运行时查看文件系统:

ls -l /proc/4425/exe

4425用真实的进程 ID 代替)。

从错误消息来看,ZeroBrane Studio 中使用的解释器似乎是/opt/zbstudio/bin/linux/x64/lua您的情况。

于 2015-10-30T13:52:55.697 回答