2016-08-14 4 views
0

私は入力Torchのネットワークの始めに2つのテンソルをマージするにはどうすればいいですか?

local cond = torch.Tensor(batchSize, 1000, 1, 1) 

// during training 
local output = net:forward({input, cond}) 

として、私は二テンソルcondを受け入れるようにネットワークを変更したい入力テンソルinput

local input = torch.Tensor(batchSize, 3, 64, 64) 

// during training 
local output = net:forward(input) 

とネットワーク

local net = nn.Sequential() 
net:add(SpatialConvolution(3, 64, 4, 4, 2, 2, 1, 1)) 

次の始まりを考えますSpatialConvolutionが追加される前にJoinTableを追加してネットワークを修正しました。

両方テンソルは寸法2,3で異なるサイズを有するので、これは動作していない、及び(BATCHSIZE 1000、64、64)のサイズは、その廃棄物のでオプションではないように4. condテンソルを与える
local net = nn.Sequential() 
net:add(nn.JoinTable(2, 4)) 
net:add(SpatialConvolution(3, 64, 4, 4, 2, 2, 1, 1)) 

メモリの。

ネットワークの最初の2つの異なるテンソルをマージして1つ目のレイヤーにフィードするベストプラクティスはありますか?

答えて

1

適合する形状を持たないテンソルを「マージ」することはありません。 テンソルのテーブルを渡して、SelectTableの操作でネットワークを開始し、単純なシーケンシャルではなくnngraphで作業する必要があります。具体的には、Spatial Convolutionがあなたのコンディションに「絞り込む」ような奇妙な「テンソル」にどのように作用すると思いますか?このようなユースケースでは、数学でうまく定義された操作がないため、より具体的にする必要があります(これはnngraphとSelectTableで実現します)。

+0

nngraphを使用すると、 – Scholle

関連する問題