Lua Torch7 数组索引符号

我有一个大小为nDatax1的数组名为xTrain

我将其初始化为

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

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

请问这个符号是什么意思?为什么不简单地使用xTrain[i]

请参考作者的代码,第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[{{1}}])
-1
[torch.DoubleTensor of size 1]

为什么第3种情况也打印了[torch.DoubleTensor of size 1]。我的猜测是在前两种情况下,它返回该位置的标量值,并且在第3种情况下返回了DoubleTensor

点赞
用户2196426
用户2196426

一个好的起点是阅读Lua 手册,它包含了 Lua 的语法和表达式。你可以看到,在 Lua 中{...}的含义如下:

 {...}              -- 创建带有所有可变参数的列表

所以简单来说,{1}创建了一个只包含单个值"1"的列表。再重复一次就可以得到一个包含单个数字“1”的列表。

如果 xTrain 是一个简单的表格,那么它很可能会失败,因为很难使用列表进行索引,但 Lua 支持元表,这意味着实际值不会用于索引表,而是传递给某个处理列表的函数。

此外,阅读Tensor类的更多内容是一个很好的方法,该类是从torch.linespace()函数返回的。使用"数组访问"进行索引的解释在[Tensor]一节中有说明 [dim1,dim2,...}]或[{dim1s,dim1e},{dim2s,dim2e}]。

2016-05-26 17:44:00