code: def backward_impl(self, inputs, outputs, propagate_down=[], accum=[]):
      dy = inputs[0].data
      w0 = inputs[1].data
      dx = outputs[0].data
  
      gdy = inputs[0].grad
      gw0 = inputs[1].grad
      gdx = outputs[0].grad
  
      inputs_fwd, outputs_fwd = self._create_fwd_inputs_outputs(
          inputs, outputs
      )
      vx = inputs_fwd[0].apply(need_grad=False)
      vw = inputs_fwd[1].apply(need_grad=propagate_down[1])
      vy = outputs_fwd[0]
  
      # w.r.t. w0
      if propagate_down[1]:
          vx.data = gdx
          vy.grad = dy
          vw.grad = gw0
          self._linear.backward(
              inputs_fwd, outputs_fwd, [False, accum[1]]
          )
  
      # w.r.t. dy
      if propagate_down[0]:
          vx.data = gdx
          vw.data = w0
          if accum[0]:
              self._linear.forward(inputs_fwd, outputs_fwd)
              gdy += vy.data
          else:
              vy.data = gdy
              self._linear.forward(inputs_fwd, outputs_fwd)
  
imports: import nnabla
  from nnabla.function import PythonFunction
label_desc: Use image node_id 12 for calling the LinearDataGrad obj's underlying member method code with example usage: obj.backward_impl(inputs, outputs, propagate_down, accum) without return types