Calling backward twice error

I am trying to train my model with the following code, and I am getting a runtime error: “RuntimeError: Trying to backward through the graph a second time, but the saved intermediate results have already been freed. Specify retain_graph=True when calling backward the first time.”

Here is my code:

	criterion = nn.MSELoss(reduction='mean')
	optimizer = torch.optim.SGD(model.parameters(), lr=.1, momentum=.9, weight_decay=1e-4)
	for i in range(100):
		for space in train_spaces:

			optimizer.zero_grad()

			input_ = model.space_to_input(space)
			input_2 = input_.repeat(len(input_), 1)
			
			predictions = model.forward(input_)
			predictions = predictions.masked_fill(input_2 == -1, -1)

			loss = criterion(predictions, input_2)			
				
			loss.backward()
		
			optimizer.step()

Could you post an executable code snippet using random input shapes, so that we could reproduce and debug this issue, please?