The question is bit outdated, I encountered the same situation
It seems that only arguments of forward method can be saved.
intermediate result (tensor) failed with message below.
am i right? is it okay to save tensor like self.intermediate = intermediate_result in terms of performance ?
def forward(self, a, b, c):
     # okay
     # self.save_for_backward(a) 
              
     # wrong!!
     self.save_for_backward(a+1)

RuntimeError: save_for_backward can only save input or output tensors, but argument 2 doesn’t satisfy this condition