在不解析命令行参数的情况下要求 Torch 命令行脚本

我有两个 Torch 脚本。一个是用于训练模型的代码,另一个是用于测试它的。

训练脚本接受命令行参数

cmd = torch.CmdLine()
cmd:option('--foo', 'bar', '例子选项')
opt = cmd:parse(arg or {})

测试脚本也接受命令行参数。它需要训练脚本,因为它需要一些训练脚本定义的函数和常量

require 'training'
cmd = torch.CmdLine()
cmd:option('--bar', 'foo', '其他选项')
opt = cmd:parse(arg or {})

当我运行我的测试脚本时,它会运行训练中的 cmd:parse 调用,并且会因为 bar 不是一个有效的选项而失败。是否有约定俗成的做法可以使 cmd:parse 调用不会在非命令行模式下发生呢?

点赞
用户1217329
用户1217329

如评论所述,当从include中调用时, debug.getinfo(3)的行为不同。

当从命令行调用时, debug.getinfo(3).namenil。 当从该文件的 require 中调用时,debug.getinfo(3).namepcall。因此,我将所有命令行函数包装在一个 if 块中,首先检查 debug.getinfo(3)。(可以类比 Python 中的 __name__ = '__main__'。)

这是使用 Torch 解释器进行的,我不知道其他 Lua 解释器是否可以工作。

2016-02-26 00:59:04