2017-08-02 100 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

这些表操作实际上是我需要的!谢谢!!! –