I do not advice compressing the data, even via PIL, as there might be some issues even if you store the PIL in F format (float). However, if you insist on using this compression, ie saving then loading the data, you would need to make sure that the data you are saving equal the original ones; you can pick one image data, compress it, then load it and compare it to the original one and if you a get zero difference, you will be fine. However, you can try first to use original wave, then the find the spectrograms, test whatever modell you are using, if things work well, try the other compression way. Numpy arrays? I don’t think the GPU utilization problem you are having is due to loading Numpy arrays, for the GPU to work faster, you can try increasing the batch size, hopefully your GPU does not run out of memory; if you have a 12GB GPU you should be fine. Which one is faster? do some experiments to measure the execution time of whatever you want to use. Finally, you can consider using torch instead of Numpy.