2016-03-28 6 views
0

Ich versuche zu verstehen, wie diese besondere Fackel-Anweisung funktioniert.Wie funktioniert die Syntax dieser Fackelanweisung?

Ich beziehe mich auf die Zeilennummer 115 bei

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

Die Linie liest

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

Ich wurde durch Aufschneiden von Daten in Fackel zu lesen und ich verstanden, dass so etwas wie

t4[{ {},1 }] 

bedeutet, Sie beziehen sich auf "alle r und 1. Spalte "des Tensors t4.

In der oben ausgedruckten Anweisung haben wir jedoch ein {} in einem anderen {} außerhalb. Was bedeutet das?

Ich verstehe, dass

trainData.data:size(1) 

auf die Losgröße des trainData bezieht, die wahrscheinlich die Anzahl der Bilder ist.

Dank

Antwort

1

Dies wirkt als eine enge. Bitte beachten Sie diese detailed explanations:

Wenn Sie doppelt geschweiften Klammern haben, es gibt ein narrow des Tensor und ein narrow ed Tensor ist immer ein Tensor (auch wenn es nur ein Element hat). Mit doppelten geschweiften Klammern können Sie einen Bereich angeben, in dem der Tensor verengt wird, was bei einzelnen geschweiften Klammern nicht möglich ist. Zum Beispiel können Sie ten[{{1,2},1}] tun, was ein 1D-Tensor der Dimension 2 ist, und wenn Sie ten[{{1,2},{2}}] tun, wird es einen 2D-Tensor der Größe 2x1 zurückgeben.

z.B .:

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]