我有两个Torch脚本。一个是用于训练模型的代码,另一个用于测试它。
训练脚本接受命令行参数
cmd = torch.CmdLine()
cmd:option('--foo', 'bar', 'example option')
opt = cmd:parse(arg or {})
测试脚本也接受命令行参数。它需要训练脚本,因为它需要训练脚本定义的一些函数和常量
require 'training'
cmd = torch.CmdLine()
cmd:option('--bar', 'foo', 'other option')
opt = cmd:parse(arg or {})
当我运行我的测试脚本时,它会从训练中运行cmd:parse
调用,但失败是因为bar
不是传入的有效选项。是否存在如何使用cmd:解析调用不会发生,除非它是从命令行运行的吗?
答案 0 :(得分:0)
正如评论中所述,debug.getinfo(3)
在从include中调用时会给出不同的行为。
从命令行调用时,debug.getinfo(3).name
为nil
。从require
对该文件发出呼叫时,debug.getinfo(3).name
为pcall
。所以我将所有命令行函数包装到if块中,首先检查debug.getinfo(3)
。 (它类似于Python中的__name__ = '__main__'
。)
这是Torch解释器,我不知道这是否适用于其他Lua解释器。