2016-03-28 37 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] 
相關問題