Самый простой способ загрузить большое количество изображений (например, набор данных) из локального хранилища в отдельные массивы в пакетном режиме - PullRequest
0 голосов
/ 24 мая 2019

При попытке загрузить набор данных celeb_a (202599 изображений; 218x178p) из моего локального хранилища в массивные массивы, для которых можно создать наборы обучающих, проверочных и тестовых данных, моей системе не хватает памяти.Я пытался найти встроенный метод в tenorflow, чтобы загружать изображения пакетами в массивные массивы, но я не смог найти метод, который имел бы смысл для того, что я делаю.

Я пытался изучить tf.data.Dataset.batch, но я не понимаю, как правильно его применить

Ищете что-то похожее на этот мннистический эквивалент

from sklearn.datasets import load_digits

# load the data
digits = load_digits(return_X_y=True)
# split into train and validation sets
train_images = digits[0][:int(len(digits[0]) * 0.8)]
train_labels = digits[1][:int(len(digits[0]) * 0.8)]
valid_images = digits[0][int(len(digits[0]) * 0.8):]
valid_labels = digits[1][int(len(digits[0]) * 0.8):]

# create the training datasets
dx_train = tf.data.Dataset.from_tensor_slices(train_images)
# apply a one-hot transformation to each label for use in the neural network
dy_train = tf.data.Dataset.from_tensor_slices(train_labels).map(lambda z: tf.one_hot(z, 10))
# zip the x and y training data together and shuffle, batch etc.
train_dataset = tf.data.Dataset.zip((dx_train, dy_train)).shuffle(500).repeat().batch(30)

dx_valid = tf.data.Dataset.from_tensor_slices(valid_images)
dy_valid = tf.data.Dataset.from_tensor_slices(valid_labels).map(lambda z: tf.one_hot(z, 10))
valid_dataset = tf.data.Dataset.zip((dx_valid, dy_valid)).shuffle(500).repeat().batch(30)

return train_dataset, valid_dataset
...