2017-07-13 11 views
2

私は最初のファイルdataloader.lua of fb.resnest.torchtorch[cpuType]ようLUAでの使用を参照してください。トーチの文法説明[CPUTYPE]

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

私はそれのいずれかの文法の説明を見つけることができませんでした。それを理解する方法?

PS:cpuTypeがファイル内に定義されています。すなわち、self.cpuTypeと思います。

更新:私のテストから、torch['FloatTensor']torch.FloatTensorに相当します。

答えて

0

torch[cpuType]torch.cpuTypeと同じだと思います。

コード(https://github.com/facebook/fb.resnet.torch/blob/master/dataloader.lua#L51-L57)はcpuType、すなわちDoubleTensorFloatTensorまたは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)) 
+0

のように、よりコンパクトな表記です。しかし、トーチ[...]の使用は奇妙で、これまでに会ったことはありません。 – Daniel

+1

ダニエルは私のために同じです。私は、 'optim [optimMethod]()'(と 'optim'パッケージ)でも同様の構文が使われています – fonfonx

0

ルアトーチ(私もルアトーチも試しました)と非常によく似ている私の知るところでは、このテンソルをどこに保存するかを指定しています。トーチは2つの異なる処理ユニットに格納された操作を実行できないことに注意してください。 cpu(net≈c.cu())とgpu [net.cuda()]の間でデータを移動する方法があります。