Вам, вероятно, следует использовать формат файла HDF5, который является хорошим способом хранения многомерных массивов на жестком диске.В частности, я рекомендую вам использовать пакет h5py
, который обеспечивает плавный интерфейс для использования файлов HDF5 в Python.
Теперь я не использовал TensorFlow 2, но в TF1 мы могли бы создать набор данных TensorFlowобъекты из генератора Python.Ниже у нас есть генератор, который будет загружать файл HDF5 и извлекать случайный элемент из массива (вдоль первой оси).
import h5py
import random
def iterate_dataset(dataset_file, dataset_name):
h5 = h5py.File(dataset_file, 'r')
idxs = range(len(h5[dataset_name]))
random.shuffle(idxs)
for i in idxs:
yield h5[dataset_name][i]
h5.close()
Вот также код для сохранения ваших массивов в виде файла HDF5
import h5py
def save_array(arr, dataset_file, dataset_name, compress=True)
with h5py.File(dataset_file, 'a') as h5:
if compress:
dataset = h5.create_dataset(
dataset_name,
data=arr,
chunks=(1, *arr.shape[1:]),
compression='lzf'
)
return
h5[dataset_name] = arr
save_array(data1, 'filename.hdf5', 'data1')
save_array(data2, 'filename.hdf5', 'data2')
Наконец, могут быть некоторые ошибки кода, поэтому я перечитал, как только я на моем компьютере.