torch[cpuType] 的语法说明

我最开始在 lua 中的 dataloader.lua of fb.resnest.torch 文件中看到了 torch[cpuType] 的使用方法:

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

我没有找到他的语法说明,如何理解它呢?

PS:cpuType在文件中有定义,即为 self.cpuType,我猜这么理解没错吧。

更新:通过我的测试,torch['FloatTensor'] 相当于 torch.FloatTensor

点赞
用户7387369
用户7387369

从我对pytorch的了解,它与Lua Torch非常相似(我也尝试了Lua Torch),我会说它指定了您要将此张量存储在哪里。请注意,torch不能在存储在两个不同处理单元中的张量上执行操作。有方法将数据移动在不同的处理单元之间,如在cpu上移动(netŧ.cpu())或gpu上移动[net.cuda()]。

2017-07-18 18:12:35
用户3754413
用户3754413

我认为 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))
2017-07-19 21:25:50