Torch/Lua, как выбрать подмножество массива или тензора?

Я работаю над Torch/Lua и имею массив dataset из 10 элементов.

dataset = {11,12,13,14,15,16,17,18,19,20}

Если я пишу dataset[1], я могу прочитать структуру 1-го элемента массива.

th> dataset[1]
11  

Мне нужно выбрать только 3 элемента среди всех 10, но я не знаю, какую команду использовать. Если бы я работал над Matlab, я бы написал: dataset[1:3], но здесь не работает.

Есть ли у вас какие-либо предложения?

Ответ 1

В факеле

th> x = torch.Tensor{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

Чтобы выбрать диапазон, например, первые три, используйте оператор индекса:

th> x[{{1,3}}]
1
2
3

Где 1 - индекс начала, а 3 - индекс конца.

Смотрите Извлечение суб тензоров для получения дополнительных альтернатив с помощью Tensor.sub и Tensor.narrow


В Lua 5.2 или менее

Таблицы Lua, такие как ваша переменная dataset, не имеют метода выбора поддиапазонов.

function subrange(t, first, last)
  local sub = {}
  for i=first,last do
    sub[#sub + 1] = t[i]
  end
  return sub
end

dataset = {11,12,13,14,15,16,17,18,19,20}

sub = subrange(dataset, 1, 3)
print(unpack(sub))

который печатает

11    12   13

В Lua 5.3

В Lua 5.3 вы можете использовать table.move.

function subrange(t, first, last)
     return table.move(t, first, last, 1, {})
end