I keep running into this error:
RuntimeError: Trying to backward through the graph a second time, but the buffers have already been freed. Specify retain_graph=True when calling backward the first time.
Can someone explain what this means?  Independent of the context of the problem, I don’t understand what the buffers are and what it means for them to be “freed”.
Context: In my case, it happens the second time I call loss.backward(), in a function: where the model’s function execute one step of a recurrent network, which updates its hidden state in the forward pass
def train_it(self, x, y):
    prediction = self(x)
    self.zero_grad()
    loss = self.loss(prediction, y)
    loss.backward()
    self.optimizer.step()