Lua - 无效的参数类型。

我是Lua的新手。目前遇到以下错误信息:

invalid argument type for argument -model (should be the model checkpoint
to use for sampling)
Usage: [options] <model>

我确定这是很容易解决的问题,但是我找不到解决方法。

“model”是一个名为lm_checkpoint_epoch50.00_2.7196.t7的文件,它位于以下目录中:

/home/ubuntu/xxx/nn/cv

我是从父目录(/home/ubuntu/xxx/nn)运行程序的。

我尝试了以下选项来运行程序(从保存模型的目录的上一级目录开始):

th sample.lua - model lm_chelm_checkpoint_epoch50.00_2.5344.t7
th sample.lua lm_chelm_checkpoint_epoch50.00_2.5344.t7
th sample.lua /cv/lm_chelm_checkpoint_epoch50.00_2.5344.t7
th sample.lua - /cv/model lm_chelm_checkpoint_epoch50.00_2.5344.t7

此外,程序还有一个torch.CmdLine()对象,其中:参数等于“/cv/lm_checkpoint_epoch50.00_2.7196.t7”。程序会打印参数,所以您会在屏幕上看到以下输出:

选项
<model> /cv/lm_checkpoint_epoch50.00_2.7196.t7

因此,它找到了参数“model”的值,该值从.lua文件中获取,而不是从命令行参数获取。这个文件是有效的。

我很迷茫,希望有人能理解这个问题。谢谢。

点赞
用户4380945
用户4380945

我已经找到了问题,正如 smhx 所建议的那样,这是一个 bug。我不小心从这个源码中更改了传入参数的设定:

require 'torch'
cmd = torch.CmdLine()
cmd:argument('-model','model checkpoint to use for sampling')

从无传入参数,到:

cmd:argument('-model','/cv/model lm_chelm_checkpoint_epoch50.00_2.5344.t7'
'model checkpoint to use for sampling')

因此,参数必须通过命令行传递,而不是通过源代码。关于参数的设定,可以在源代码中包含它们。

因此,如果我改回到源代码,并执行以下命令行:

th sample.lua cv/lm_chelm_checkpoint_epoch50.00_2.5344.t7

那么它就可以正常工作。

2015-12-28 22:17:12