0

Torch コマンドを使用して単純なテーブルにデータを挿入していますが、正常に動作します。

completeProfile = {};
table.foreach(firstHalf, function(i,v)table.insert(completeProfile,v) end);
table.foreach(secondHalf, function(i,v)table.insert(completeProfile,v) end);
table.foreach(presentWord, function(i,v) table.insert(completeProfile,v) end);

Torch Tensors を使用するとすべてがより効率的になることに、誰かが気付きました。だから私は最初の行を

completeProfile = torch.Tensor(CONSTANT_NUMBER);

残念ながら、table.insert() 関数を置き換えることができる Tensor 関数が見つかりません。

何か考えはありますか?

4

1 に答える 1

2

Tensor オブジェクトは固定サイズであるため、insert の追加機能に対応する関数はありません。あなたのコードが行っていることは、3 つのテーブルを 1 つに連結することです。Tensor を使用している場合:

 firstHalf = torch.Tensor(firstHalf)
 secondHalf = torch.Tensor(secondHalf)
 presentWord = torch.Tensor(presentWord)

次に、それらを連結するのは簡単です。

 completeProfile = firstHalf:cat(secondHalf):cat(presentWord)

別のオプションは、挿入した最後のインデックスを保存して、テンソルのどこに「追加」するかを知ることです。以下の関数は、最後のインデックスを追跡するクロージャーを作成します。

function appender(t)
   local last = 0
   return function(i, v)
       last = last + 1
       t[last] = v
   end
end

completeProfile = torch.Tensor(#firstHalf + #secondHalf + #presentWord)

profile_append = appender(completeProfile)

table.foreach(firstHalf, profile_append)
table.foreach(secondHalf, profile_append)
table.foreach(presentWord, profile_append)
于 2015-07-02T22:19:32.600 に答える