我有一个名为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}}
答案 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} }]