Как получить доступ к выводам промежуточных слоев с помощью 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})

Однако я не знаю, как я могу получить доступ к результату второго слоя и применить функцию потерь (критерий) и аккуратно выполнить обратное распространение. Может ли кто-нибудь помочь мне с этим?


person Amir    schedule 27.07.2016    source источник


Ответы (1)


вы должны указать свой слой как отдельный вывод, тогда вы сможете получить к нему доступ в любой момент времени

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})
person lejlot    schedule 31.07.2016