我需要在一个网络中对一个中间层(L2)的表示应用损失函数,这个网络在L2层之后还有很多层。我知道如何在nngraph中获取网络的输出,如下所示:
input = nn.Identity()()net = nn.Sequential()net:add(nn.Linear(100, 20)):add(nn.ReLU(true)) -- L1net:add(nn.Linear(20, 10)):add(ReLU(true)) -- L2net:add(nn.Linear(10, 2)) -- L3output = net(input)gmod = nn.gModule({input}, {output})
然而,我不知道如何以一种简洁的方式访问第二层的输出,并对其应用损失函数(准则)并进行反向传播。谁能帮我解决这个问题?
回答:
你应该将你的层指定为一个单独的输出,这样你就可以在任何时候访问它
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})