我首先在文件dataloader.lua of fb.resnest.torch中看到lua中的用法torch[cpuType]
:
batch = torch[cpuType](sz, nCrops, table.unpack(imageSize))
我没有找到任何语法解释。怎么理解呢?
PS:cpuType
在文件中定义,我猜是self.cpuType
。
更新:在我的测试中,torch['FloatTensor']
相当于torch.FloatTensor
。
答案 0 :(得分:0)
根据我对pytorch的了解,这与Lua Torch非常相似(我也尝试过lua torch),我会说它指定了你想要存储这个张量的位置。注意,火炬不能执行存储两个不同处理单元的操作。有一些方法可以在cpu(net≈ß.cpu())和gpu [net.cuda()]之间移动数据。
答案 1 :(得分:0)
我认为torch.cpuType
与cpuType
相同。
代码(https://github.com/facebook/fb.resnet.torch/blob/master/dataloader.lua#L51-L57)似乎表示DoubleTensor
可以采用多个不同的值,即FloatTensor
,HalfTensor
或torch.DoubleTensor
。因此,此表示法会创建torch.FloatTensor
或torch.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))
。对于像
let newData,
newArgs,
chain = (data, ...myargs) => {
if (myargs.length === 0) {
return data;
} else {
newData = myargs[0](data);
myargs.splice(0, 1);
newArgs = myargs;
chain(newData, ...newArgs);
}
},
add1 = (num) => {
return num + 1;
};
chain(5, add1, add1, add1);
console.log(newData); // 8