'Use Autodiff.back_prop_grad to back propagate gradients for the
corresponding tensors.
Arguments:
error (Tensor): deltas back propagated from the adjacent higher layer
Returns:
Tensor: deltas to propagate to the adjacent lower layer'

def bprop(self, error):

    if (not self.deltas):
        self.deltas = error.reshape((self.nfm, (-1)))
    ad = Autodiff(self.fprop_op_tree, self.be, next_error=self.deltas)
    ad.back_prop_grad([self.x, self.gamma, self.beta], [self.deltas, self.grad_gamma, self.grad_beta])
    return error
