如何在Lua/Torch中给定函数名称的字符串来调用函数?

我想在Lua/Torch中将一个字符串名称作为函数来评估。下面是我想要做的示例:

require 'torch'

tensorType = torch.getdefaulttensortype()
print (tensorType) -- 将打印“torch.DoubleTensor”

我的目标是能够使用 tensorType 字符串作为函数的名称,并像下面这样评估那个函数:

tensorType(一些参数)

在MATLAB和Python中,有一个`eval()'函数可以执行任意字符串。在Lua/Torch中是否有这样的函数?

我该如何在Torch/Lua中实现这一目标?

点赞
用户3979429
用户3979429

你可以使用 loadstring,但普遍不建议使用它,因为它需要在运行时编译代码。这是为了什么?

2016-04-08 22:33:33
用户107090
用户107090

首先从字符串中提取字段的名称:

k = tensorType:match("%.(.+)$")

然后使用名称调用函数:

torch[k](一些参数)
2016-04-09 02:33:45
用户6262499
用户6262499

你也可以尝试使用lutorpy,在其中你将得到一个python中的lua引擎,因此你可以加载任何lua/torch库,也可以使用“lua.eval('torch.DoubleTensor(3,4)')”来执行lua代码。请参阅lutorpy以获取更多详细信息。

2016-05-03 17:15:31