ZeroBraneStudio与Torch的Lua版本

时间:2015-10-30 08:43:40

标签: lua torch zerobrane

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

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

有人知道如何查看火炬正在使用的lua版本吗?关于如何解决这个问题的任何想法?

谢谢!

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

3 个答案:

答案 0 :(得分:1)

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

print(_VERSION)

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

答案 1 :(得分: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

(用实际进程ID替换4425)。

根据错误消息判断ZeroBrane Studio中使用的解释器在您的情况下似乎是/opt/zbstudio/bin/linux/x64/lua

答案 2 :(得分:0)

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

public class MyTest {

    private final PrintStream outDefault = System.out;
    private final PrintStream errDefault = System.err;

    private final ByteArrayOutputStream outContent = new ByteArrayOutputStream();
    private final ByteArrayOutputStream errContent = new ByteArrayOutputStream();

    @Before
    public void setUp() {
        System.setOut(new PrintStream(outContent));
        System.setErr(new PrintStream(errContent));  
    }

    @After
    public void tearDown() {
        System.setOut(outDefault);
        System.setErr(errDefault);
    }

    @Test
    public void Test1_Condition_Expected() {
        assertTrue(errContent.toString().toLowerCase().contains("..."));
    }

    ...

    @Test
    public void TestN_Condition_Expected() {
        assertTrue(errContent.toString().toLowerCase().contains("..."));
    }
}

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

感谢大家的建议。