I doubt you can save more memory than is already saved by wrapping the code in a with torch.no_grad() block. The output of conv1 has to be allocated at one place during the forward pass.
How many output channels are you using?