2017-08-02 99 views
1

快捷我現在有2個輸入X的網絡和Y.構建網絡使用炬

X串接y,然後通過網絡來獲得RESULT1。同時X會將結果1作爲捷徑。

只有一個輸入很容易。

branch = nn.Sequential() 
branch:add(....) --some layers 
net = nn.Sequential() 
net:add(nn.ConcatTable():add(nn.Identity()):add(branch)) 
net:add(...) 

但是,當涉及到兩個輸入,我其實不知道該怎麼做?此外,nngraph是不允許的。任何人都知道該怎麼做?

+0

'X'是輸入還是網絡? – fonfonx

+0

X和Y都是輸入。示例代碼只有一個輸入 –

+0

那麼'X = nn.Sequential()'? – fonfonx

回答

0

您可以使用表模塊,看看這個頁面:https://github.com/torch/nn/blob/master/doc/table.md

net = nn.Sequential() 
triple = nn.ParallelTable() 
duplicate = nn.ConcatTable() 
duplicate:add(nn.Identity()) 
duplicate:add(nn.Identity()) 
triple:add(duplicate) 
triple:add(nn.Identity()) 
net:add(triple) 
net:add(nn.FlattenTable()) 
-- at this point the network transforms {X,Y} into {X,X,Y} 
separate = nn.ConcatTable() 
separate:add(nn.SelectTable(1)) 
separate:add(nn.NarrowTable(2,2)) 
net:add(separate) 
-- now you get {X,{X,Y}} 
parallel_XY = nn.ParallelTable() 
parallel_XY:add(nn.Identity()) -- preserves X 
parallel_XY:add(...) -- whatever you want to do from {X,Y} 
net:add(parallel) 
parallel_Xresult = nn.ParallelTable() 
parallel_Xresult:add(...) -- whatever you want to do from {X,result} 
net:add(parallel_Xresult) 

output = net:forward({X,Y}) 

的想法是先從{X,Y},複製X並做你的作業。這顯然有點複雜,nngraph應該是在這裏做的。

+0

這些表操作實際上是我需要的!謝謝!!! –