When running this code:
def forward(self, input):
        self.output = input.clone()
        self.G = self.gram(input)
        self.G.div(input.nelement())
        self.targetP = nn.Parameter(self.target,requires_grad=False)
        self.loss = self.strength * self.crit(self.G.cpu(), self.targetP.cpu())

def backward(self, input, gradOutput):
          print(self.G.size())
          self.GP = nn.Parameter(self.G.data,requires_grad=True)
          self.dG = self.GP.backward(self.GP, retain_graph=False)
          print(self.dG)

My self.G tensor has a size of:
(1L, 64L, 64L)

But after using .backward() on it, the resulting dG variable ends up being empty:
None

Am I using .backward() incorrectly here?