Я бы использовал tf.data.Dataset.from_generator()
, что позволяет вам использовать API данных Tensorflow через пользовательскую функцию генератора питона. Таким образом, вы можете загружать каждый файл .npy
итеративно, загружая в память только один файл numpy.ndarray
одновременно. Предполагая, что каждый загруженный numpy.ndarray
является одним экземпляром, пример кода для вашего случая может выглядеть следующим образом:
import tensorflow as tf
import numpy as np
import os
def gen():
inputs_path = ""
labels_path = ""
for input_file, label_file in zip(os.listdir(inputs_path), os.listdir(labels_path)):
x = np.load(os.path.join(inputs_path, input_file))
y = np.load(os.path.join(labels_path, label_file))
yield x, y
INPUT_SHAPE = []
LABEL_SHAPE = []
# Input pipeline
ds = tf.data.Dataset.from_generator(
gen, (tf.float32, tf.int64), (tf.TensorShape(INPUT_SHAPE), tf.TensorShape(LABEL_SHAPE)))
ds = ds.batch(8)
ds_iter = ds.make_initializable_iterator()
inputs_batch, labels_batch = ds_iter.get_next()
Я не проверял код. Надеюсь, это поможет!