+ for k = #self.sorted, 1, -1 do
+ local nnm = self.sorted[k]
+ local node = self.node[nnm]
+ local pred, succ, gradInputSucc = node.pred, node.succ, node.gradInputSucc
+
+ if #gradInputSucc > 0 then
+ -- We update nnm:gradInput
+ local gi
+ if #gradInputSucc == 1 then
+ gi = gradInputSucc[1] -- we avoid a clone()
+ elseif #gradInputSucc > 1 then
+ for k = 1, #gradInputSucc do
+ if gi then
+ gi:add(gradInputSucc[k])
+ else
+ gi = gradInputSucc[k]:clone()
+ end
+ end
+ end
+ nnm:updateGradInput(node.input, gi)
+ end