Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Lua/Torch中以字符串形式调用函数名?_Python_Matlab_Lua_Eval_Torch - Fatal编程技术网

Python 如何在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(

我想将字符串名称作为Lua/Torch中的函数进行求值。下面是我想做的一个例子:

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”是范围内的一个变量,如果它是一个全局变量,它就是。