2016-03-28 47 views
0

我想了解这个特殊的火炬声明是如何工作的。这个火炬声明的语法是如何工作的?

我指的是行号115在

https://github.com/torch/tutorials/blob/master/2_supervised/1_data.lua#L115

线读取

trdata[{ {1,trainData.data:size(1)} }] = trainData.data 

我是通过在火炬数据的切片读书了,我明白像

t4[{ {},1 }] 

表示您指的是“所有r行和第一列“的张量t4。

但是,在上面打印的声明中,我们在另一个{}之外有一个{}。那是什么意思?

我也明白,

trainData.data:size(1) 

指trainData的批量大小这可能是图像的数量。

谢谢

回答

1

这是一个狭义的行为。请参阅这些detailed explanations

当你有双大括号,它返回的张量narrownarrow ED张量始终是一个张量(哪怕只有一个元素)。使用双曲花括号,您可以指定张量变窄的范围,单花括号不可能。例如,你可以做ten[{{1,2},1}],这将是一维2的一维张量,如果你做ten[{{1,2},{2}}]它将返回一个尺寸为2x1的2D张量。

例如为:

th> trsize = 10 
th> trdata = torch.Tensor(trsize, 3, 32, 32) 
th> subdata = trdata[{ {1, 5} }] 
th> subdata:size() 
    5 
    3 
32 
32 
[torch.LongStorage of size 4]