Python: ошибка памяти в Google Compute Engine - PullRequest
0 голосов
/ 29 февраля 2020

В Google Compute Engine я запускаю следующее:

z = np.zeros((10000, 32, 32, 3))

и получаю

MemoryError Traceback (последний вызов был последним) в ----> 1 z = np.zeros ((10000, 32, 32, 3))

MemoryError: невозможно выделить 234. МБ для массива с формой (10000, 32, 32, 3) и типом данных float64

Похоже, что текущие конфигурации ОС не позволяют мне выделять большие порции данных, что мне кажется довольно странным.

Как я могу получить память, которую мне нужно выделить?


Это для назначения cs231n 2 , для загрузки CIFAR-10 в память.

1 Ответ

0 голосов
/ 29 февраля 2020

Я предполагаю, что массив, который вы пытаетесь создать, может быть слишком большим для компьютерного движка Google. Подумайте об этом так:

Вы пытаетесь выделить память для 4d-массива размером 10000 * 32 * 32 * 3 = 30 720 000 ячеек, что очень много! учитывая, что стандартный размер flaot64 в python равен 8, это 245 760 000 байт (245 МБ) данных, которые можно выделить с помощью одной команды!

Вы можете выделить байтовый массив одинакового размера с помощью команды:

z = bytearray(245760000)

, но я точно не знаю, для чего вы это используете, поэтому я не могу сказать, поможет ли это вам .

Даже если есть решение выделить этот объем памяти на компьютерном движке Google, я призываю вас подумать, действительно ли вам нужно столько места. Например, если вам все еще нужен этот большой массив, но значения каждой ячейки равны 0 или 1, вы можете сделать его двоичным массивом, который будет содержать в 64 раза меньше места.

Опять же, Пересмотрите, действительно ли вам нужно такое много места, и если вам нужен такой большой массив, чем проявите творческий подход к хранению всех этих данных.

...