Lua Torch7数组索引表示法

时间:2016-05-26 06:12:41

标签: lua deep-learning torch

我有一个名为xTain的数组nDatax1

我将其初始化为

xTrain = torch.linspace(-1,1,nData)

要访问该数组,作者使用xTrain[{{i}}]

你能解释一下这个符号吗?为什么不简单xTrain[i]

请参阅Pg No 21- https://www.cs.ox.ac.uk/people/nando.defreitas/machinelearning/lecture4.pdf

上的作者代码

作为补充说明 -

xTrain=torch.linespace(-1,1,10)

当我做的时候

th> print(xTrain[1])    
-1

th> print(xTrain[{1}])
-1

th> print(xTrain[[torch.DoubleTensor of size 1]])
-1
[torch.DoubleTensor of size 1]

为什么在第三种情况下也会打印DoubleTensor。我的猜测是在前2个案例中它在该位置返回标量值,在第3个案例中返回{{1}}

1 个答案:

答案 0 :(得分:1)

开始的好地方是Lua manual,它的语法和表达。你可以看到,Lua中{...}的含义是什么:

 {...}              -- creates a list with all vararg parameters

因此,简而言之,{1}会创建一个包含单值1的列表。再次重复该列表,您会得到一个包含包含单个数字1的列表的列表。

如果xTrain是简单表,它可能会失败,因为很难使用列表进行索引,但Lua支持metatable,因此实际值不用于索引表,而是传递给某些函数负责清单。

另外,从torch.linespace()函数返回的Tensor类的进一步阅读是一个值得一看的好地方。索引使用"数组访问" [Tensor] [{ dim1,dim2,... }] or [{ {dim1s,dim1e}, {dim2s,dim2e} }]

部分对此进行了解释