Вы просто не можете загрузить столько изображений в память.Вы пытаетесь загрузить каждый файл по указанному пути к памяти, добавив их в x.
Попробуйте обработать их пакетами или, если вы делаете это для приложения tenorflowпопробуйте сначала записать их в .tfrecords.
Если вы хотите сэкономить память, оставьте изображения как np.uint8 вместо того, чтобы приводить их к плавающей точке (что происходит автоматически, когда вы нормализуете их в этой строке> x = x/255
)
Вам также не нужно np.asarray
в вашей строке x.append(np.asarray(image))
.image
это уже массив.np.asarray
предназначен для преобразования списков, кортежей и т. Д. В массивы.
edit:
очень грубый пример пакетирования:
def batching function(imlist, batchsize):
ims = []
batch = imlist[:batchsize]
for image in batch:
ims.append(image)
other_processing()
new_imlist = imlist[batchsize:]
return x, new_imlist
def main():
imlist = all_the_globbing_here()
for i in range(total_files/batch_size):
ims, imlist = batching_function(imlist, batchsize)
process_images(ims)