正在阅读 lua table

Reading from lua table

我是 Lua 的新手,我正在努力学习它。 最近我遇到了下面的代码行,我认为它正在从 table.

中提取一些值

local context = context_proto[{{1, batch_size}, {1, source_l*imgH}}]

我以前没有见过这种特殊的阅读方法table。如果有人能帮助我理解上面的代码到底在做什么,我将不胜感激。

来自Lua Documentation

The type table implements associative arrays, that is, arrays that can be indexed not only with numbers, but with any Lua value except nil and NaN.

该代码使用 table 作为另一个 table 的索引。如果这样写可能会更清楚:

local contextIndex = {{1, batch_size}, {1, source_l*imgH}}
local context = context_proto[contextIndex]

如果没有更多代码,您在此处看到的代码在本机 Lua 中没有太大意义。它通常用于火炬。我在网上的火炬相关脚本中找到了您的代码段。所以我想这是一个有效的猜测。

我对 Torch 不是很有经验,但根据我在文档中看到的内容,这将为您提供 sub-tensor 的 context_proto。行 1-batchSize 和 col source_l * imgH.

我认为这叫做切片,在下面demo/tutorial中有介绍: https://github.com/torch/demos/blob/master/tensors/slicing.lua

print 'more complex slicing can be done using the [{}] operator'
print 'this operator lets you specify one list/number per dimension'
print 'for example, t2 is a 2-dimensional tensor, therefore'
print 'we should pass 2 lists/numbers to the [{}] operator:'
print ''

t2_slice1 = t2[{ {},2 }]
t2_slice2 = t2[{ 2,{} }]      -- equivalent to t2[2]
t2_slice3 = t2[{ {2},{} }]
t2_slice4 = t2[{ {1,3},{3,4} }]
t2_slice5 = t2[{ {3},{4} }]
t2_slice6 = t2[{ 3,4 }]
...

更多细节请参考火炬文档。

https://github.com/torch/torch7/blob/master/doc/tensor.md#tensor--dim1dim2--or--dim1sdim1e-dim2sdim2e-