For solving the inconsistent forward and backward functions in excitation backprop, I implemented two functions with pure conv functions by

  
      github.com
  
  
    yulongwang12/visual-attribution/blob/master/explainer/ebp/functions.py#L66-L69 1

backend = type2backend[inp.type()]
f = getattr(backend, 'SpatialConvolutionMM_updateOutput')
f(backend.library_state, inp, output, weight, bias, columns, ones,
  kH, kW, ctx.stride[0], ctx.stride[1], ctx.padding[0], ctx.padding[1])



  
  
    
    
  
  


Note that this is a temporal solution for pytorch 0.2 version. The full implementation can be found in https://github.com/yulongwang12/visual-attribution 8. Hope it helps