torch语法中这个语句是如何工作的?

我正在尝试理解这个特定的torch语句是如何工作的。

我在参考第115行

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

这行代码如下

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

我正在查阅有关torch数据切片的资料,我了解到这种写法

t4[{ {},1 }]

表示你正在引用张量t4的"所有行和第1列"。

但是,在上面的语句中,我们有一个{}在外部的另一个{}内部。这是什么意思?

我确实明白

trainData.data:size(1)

表示trainData的批次大小,这可能是图像数量。

谢谢

点赞
用户1688185
用户1688185

这相当于 narrow。请参考这些 详细解释:

当你有双向大括号时,它返回一个张量的“narrow”,一个“narrow”出来的张量总是一个张量(即使它只有一个元素)。使用双向大括号,你可以指定张量将被缩小的范围,这是使用单向大括号不可能的。例如,你可以做 ten[{{1,2},1}],它将是一个2维的1D张量,如果你做 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]
2016-03-29 07:43:45