Hmm. Ok, I calculated approximate size when the images are loaded as tensors.
Each image is 227 pixel x 227 pixel x 3 channels
227 * 227 * 3 * 32 bit float / (8 * 1024 * 1024) = 0.589 MB

A ~45kB png image becomes  ~0.6MB when loaded to memory, i.e., ~13.41 times more  Ok, understood now.
Here’s some things I can try to reduce the memory footprint:

Decrease pixel resolution when loading as tensor. Right now stuck with 227xx227 

Use 1 channel instead of 3 (reduce by factor of 3)
Load as a 16 bit float (reduce by factor of 2)

Are there any other approaches I can try?