如何使用nngraph访问中间层的输出?

我需要在一个网络中将损失函数应用于中间层(L2)表示,该网络在L2层之后有许多层。我知道如何在nngraph中访问网络的输出,如下所示:

input = nn.Identity()()
net = nn.Sequential()
net:add(nn.Linear(100, 20)):add(nn.ReLU(true)) -- L1
net:add(nn.Linear(20, 10)):add(ReLU(true)) -- L2
net:add(nn.Linear(10, 2)) -- L3
output = net(input)

gmod = nn.gModule({input}, {output})

但是,我不知道如何访问第二层的结果,并以整洁的方式应用损失函数(标准)并在其上进行反向传播。有人能帮我吗?

点赞
用户2658050
用户2658050

你应该将你的层作为单独的输出指定,这样你就可以在任何时候访问它。

input = nn.Identity()()
L1 = nn.ReLU(true)(nn.Linear(100, 20)(input))
L2 = nn.ReLU(true)(nn.Linear(20, 10)(L1))
L3 = nn.Linear(10, 2)(L2)

gmod = nn.gModule({input}, {L3, L2})
2016-07-31 15:53:58