Deep learning 利用torch建立快捷网络

Deep learning 利用torch建立快捷网络,deep-learning,torch,Deep Learning,Torch,我现在有一个网络,有两个输入X和Y X连接Y,然后传递到网络以获得结果1。同时X将concat result1作为快捷方式 如果只有一个输入,这很容易 branch = nn.Sequential() branch:add(....) --some layers net = nn.Sequential() net:add(nn.ConcatTable():add(nn.Identity()):add(branch)) net:add(...) 但是当涉及到两个输入时,我真的不知道怎么做?此外,

我现在有一个网络,有两个输入X和Y

X连接Y,然后传递到网络以获得结果1。同时X将concat result1作为快捷方式

如果只有一个输入,这很容易

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

但是当涉及到两个输入时,我真的不知道怎么做?此外,不允许使用nngraph。有人知道怎么做吗?

您可以使用表格模块,请查看此页面:


想法是从
{X,Y}
开始,复制
X
并执行操作。这显然有点复杂,
nngraph
应该在这里完成这项工作。

您可以使用表格模块,请查看此页面:


想法是从
{X,Y}
开始,复制
X
并执行操作。这显然有点复杂,
nngraph
应该在这里完成这项工作。

X
是输入还是网络?X和Y都是输入。示例代码只有一个输入关于
X=nn.Sequential()
?很抱歉我的错误。我只是在这里复制了我的代码,其中有一些名称冲突。我不知道如果到网络的输入传递是一个包含X和Y的表,我怎么能只使用X作为快捷方式
X
是输入还是网络?X和Y都是输入。示例代码只有一个输入关于
X=nn.Sequential()
?很抱歉我的错误。我只是在这里复制了我的代码,其中有一些名称冲突。我不知道如果网络的输入通道是一个包含X和Y的表格,我怎么能只用X作为快捷方式
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})