Загрузка большого набора изображений убивает процесс - PullRequest
0 голосов
/ 24 апреля 2020

Загрузка 1500 изображений размером (1000,1000,3), код взламывается и пропускается kill 9 без каких-либо дальнейших ошибок. Память, используемая до этой строки кода, составляет 16% от общей памяти системы. Общий размер директории изображений составляет 7.1G .

X = np.asarray(images).astype('float64')
y = np.asarray(labels).astype('float64')

системная спецификация c:

  • ОС: macOS Catalina
  • Процессор: 2,2 ГГц 6-ядерный Intel Core i7 16 ГБ 2
  • память: 16 ГБ, 2400 МГц, DDR4

Обновление: ошибка, отображаемая ниже при выполнении кода на 32 виртуальных ЦП, 120 ГБ памяти.

MemoryError: Unable to allocate 14.1 GiB for an array with shape (1200, 1024, 1024, 3) and data type float32

1 Ответ

0 голосов
/ 24 апреля 2020

Для точного ответа вам потребуется предоставить больше информации / подробностей, но, если предположить, что это ошибка памяти (невероятно вероятно, что размер изображений на диске не соответствует размеру, который они занимают в памяти, так что не имеет значения. В 100% случаев изображения в памяти будут занимать намного больше места из-за указателей, объектов, которые необходимы и т. д. Интуитивно я бы сказал, что 16 ГБ оперативной памяти нигде почти недостаточно для загрузки 7 ГБ изображений. Невозможно сказать, сколько вам нужно, но по опыту я бы сказал, что вам нужно увеличить его до 64 ГБ. Если вы используете Keras, я бы посоветовал заглянуть в DirectoryIterator .

Редактировать:

Как указал Крис Луен go, я упустил тот факт, что вы указали размер изображений.

...