Я новичок в работе с большими наборами данных.Я хотел бы создать файл .npy с моими данными обучения.У меня есть PNG-изображения объемом около 1,7 ГБ, которые я хочу загрузить, однако из-за ошибок памяти я разделил этот набор на куски, и сейчас я пытаюсь загрузить PNG-файлы только около 389,5 МБ в массивный массив и затем сохранить их.Это.Я могу загрузить файлы в массив, но когда я пытаюсь сохранить его, я получаю ошибку памяти.Я пробовал оба типа файлов .pickle и .npy.Я не понимаю, почему это проблема, поскольку у моего ноутбука 8 ГБ ОЗУ.Я вижу, что в моем коде есть некоторые недостатки памяти, но я не нашел способа их обойти.Как я могу загрузить эти данные в файл .npy?И каков наилучший подход для меня, чтобы я также включил остальные данные о моих тренировках?
def create_training_data():
training_data = []
IMAGE_SIZE = 640
DATADIR = os.path.join(os.path.dirname(__file__), 'training_data') # directory where training data is held
CATEGORIES = ["0", "1"]
count = 0
fail = 0
for category in CATEGORIES:
path = os.path.join(DATADIR, category)
class_num = CATEGORIES.index(category)
for img in os.listdir(path):#
count += 1
print(str(count))
try:
img_array = cv2.imread(os.path.join(path, img))
if not (img_array.shape[0] == IMAGE_SIZE and img_array.shape[1] == IMAGE_SIZE):
img_array = cv2.resize(img_array, (IMAGE_SIZE, IMAGE_SIZE))
training_data.append([img_array, class_num])
except Exception:
fail += 1
print("failed "+str(fail)+"/"+str(count))
random.shuffle(training_data)
X = []
y = []
for features, label in training_data:
X.append(features)
print(str(features))
y.append(label)
# X = np.array(X).reshape(-1, IMAGE_SIZE, IMAGE_SIZE, 3)
np.save('training_data/X.npy', X)
np.save('training_data/y.npy', y)
# pickle_out = open("training_data/X.pickle", "wb")
# pickle.dump(X, pickle_out)
# pickle_out.close()pytho
# pickle_out = open("training_data/y.pickle", "wb")
# pickle.dump(y, pickle_out)
# pickle_out.close()
Любая помощь будет высоко ценится!