2016-08-14 79 views
0

鑑於網絡如何合併兩個張量在火炬網絡的開始?

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

以下開始與輸入張量input

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

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

我要修改網絡接受第二張cond作爲輸入

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

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

我在添加SpatialConvolution之前通過添加JoinTable來修改網絡,如下所示:

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

這是不工作,因爲這兩個張量具有在尺寸2,3不同的尺寸,和4給予cond張量爲(BATCHSIZE,1000,64,64)的大小是不因爲其浪費的選項的記憶。

是否有任何合併網絡開始時兩個不同張量饋入第一層的最佳做法。

回答

1

沒有「合併」張量的東西沒有兼容的形狀。您應該簡單地通過張量表並開始您的網絡與SelectTable操作並與nngraph一起使用,而不是簡單的順序。特別是 - 您如何期望Spatial Convolution能夠處理這種向您的cond「縮小」的奇怪「張量」?在這種用例中沒有明確的數學運算,因此您必須更具體(您將使用nngraph和SelectTable來實現)。

+0

使用nngraph做的伎倆 – Scholle