Python 如何在Lua/Torch中以字符串形式调用函数名?
我想将字符串名称作为Lua/Torch中的函数进行求值。下面是我想做的一个例子:Python 如何在Lua/Torch中以字符串形式调用函数名?,python,matlab,lua,eval,torch,Python,Matlab,Lua,Eval,Torch,我想将字符串名称作为Lua/Torch中的函数进行求值。下面是我想做的一个例子: require 'torch' tensorType = torch.getdefaulttensortype() print (tensorType) -- Will print "torch.DoubleTensor" 我的目标是能够使用tensorType中的字符串作为函数名,并对该函数进行如下计算: tensorType(some arguments) 在MATLAB和Python中有一个“eval(
require 'torch'
tensorType = torch.getdefaulttensortype()
print (tensorType) -- Will print "torch.DoubleTensor"
我的目标是能够使用tensorType
中的字符串作为函数名,并对该函数进行如下计算:
tensorType(some arguments)
在MATLAB和Python中有一个“eval()”函数,可以执行任意字符串。Lua/Torch中是否有此功能
如何在Torch/Lua中做到这一点?您可以使用
loadstring
,但通常不建议这样做,因为它必须在运行时编译代码。这是干什么用的?首先从字符串中提取字段名称:
k=tensorType:match("%.(.+)$")
然后使用名称调用函数:
torch[k](some arguments)
您也可以尝试,您将有一个python中的lua引擎,因此,您可以加载任何lua/torch库,并且可以运行带有“lua.eval('torch.DoubleTensor(3,4)’”的lua代码。查看更多详细信息。我希望在程序运行时能够在数据类型之间动态切换。@Amir我不明白?因此在我的程序中有一个表,其条目包括来自不同数据类型的数据。当程序使用某些默认数据类型(例如torch.DoubleTensor)运行时,我需要将表中的数据转换为默认数据类型。@Amir您希望如何转换它们?您正在转换什么数据类型?它们是浮点型、双精度型和整数型。谢谢。但这只适用于我的问题,不能概括。是否有任何通用的方法来调用一个只给出其名称的函数名?请解释更多。函数没有名称。无论如何,“torch.DoubleTensor”不是一个标识符。你是说这是一种表达吗?“torch”是一个全局变量吗?@TomBlodget我不清楚你的意思,但据我所知,函数有名称(如问题中给出的示例)。我认为您的机器上没有安装“火炬”。我说得对吗?抱歉这么简单。函数是由一个或多个变量引用的值。如果你有一个你认为是函数的值,你可以尝试调用它。所以,这一部分变得不重要了。问题是你所说的“火炬双张量”是什么意思。根据你的评论,你需要一个大致的答案。它看起来像一个标识符,点,标识符。这可能是一个表达式,索引(键)作为字符串(第二个标识符)执行索引操作@lhf展示了如何使用它——假设“torch”是范围内的一个变量,如果它是一个全局变量,它就是。