web-dev-qa-db-ja.com

Torch / Lua、配列またはテンソルのサブセットを選択する方法は?

私はTorch/Luaに取り組んでおり、10個の要素の配列datasetを持っています。

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

dataset[1]と書くと、配列の最初の要素の構造を読み取ることができます。

th> dataset[1]
11  

10個すべての中から3個の要素を選択する必要がありますが、どのコマンドを使用するかわかりません。 Matlabで作業している場合は、dataset[1:3]と記述しますが、ここでは機能しません。

何か提案はありますか?

10
DavideChicco.it

トーチで

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

最初の3つのように範囲を選択するには、 インデックス演算子 を使用します。

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

ここで、1は「開始」インデックス、3は「終了」インデックスです。

Tensor.subおよびTensor.narrowを使用するその他の代替案については、 サブテンソルの抽出 を参照してください。


Lua5.2以下の場合

dataset変数などのLuaテーブルには、サブ範囲を選択する方法がありません。

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

Lua5.3では

Lua 5.3では、 table.move

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