As far as I understand, all the three methods you describe use essentially the same amount of memory. Not using different variable names may save the memory used for storing those variable names, not more. And this is an insignificant amount, so you should use as many variable names as will make the code easy to read.
One way to reduce memory requirements is to go through the input in small batches, and to use PyTorch DataLoader to load the data.