torch[cpuType]的语法解释

The grammar explanation of torch[cpuType]

我第一次看到 lua 中的用法就像 torch[cpuType] 在文件 dataloader.lua of fb.resnest.torch:

batch = torch[cpuType](sz, nCrops, table.unpack(imageSize))

我没有找到任何关于它的语法解释。怎么理解呢?

PS:文件中定义了cpuType,即self.cpuType,我猜。

更新:根据我的测试,torch['FloatTensor'] 等同于 torch.FloatTensor

根据我对 pytorch 的了解,它与 Lua Torch 非常相似(我也尝试过 lua torch),我会说它指定了您希望存储此张量的位置。请注意,火炬无法执行存储两个不同处理单元的操作。有一些方法可以在 cpu (net≈ß.cpu()) 和 gpu [net.cuda()] 之间移动数据。

我认为 torch[cpuType]torch.cpuType 相同。

代码 (https://github.com/facebook/fb.resnet.torch/blob/master/dataloader.lua#L51-L57) 似乎说 cpuType 可以取几个不同的值,即 DoubleTensorFloatTensorHalfTensor。因此,此表示法创建 torch.DoubleTensortorch.FloatTensortorch.HalfTensor。对于

这样的东西,它是一种更紧凑的表示法
if cpuType == 'torch.DoubleTensor' then
    batch = torch.DoubleTensor(sz, nCrops, table.unpack(imageSize))
elseif cpuType == 'torch.FloatTensor' then
    batch = torch.FloatTensor(sz, nCrops, table.unpack(imageSize))
elseif cpuType == 'torch.HalfTensor' then
    batch = torch.HalfTensor(sz, nCrops, table.unpack(imageSize))