Как рассчитать оперативную память, необходимую для тренировки? - PullRequest
0 голосов
/ 22 января 2019

Как рассчитать объем оперативной памяти, необходимой для обучения модели керас? Я хочу рассчитать это, потому что я иногда сталкиваюсь с ошибкой превышения системной памяти при обучении моделей. Вот моя модель, например:

Layer (type)                 Output Shape              Param #
=================================================================
conv2d_1 (Conv2D)            (None, 30, 30, 32)        320
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 28, 28, 32)        9248
_________________________________________________________________
max_pooling2d_1 (MaxPooling2 (None, 14, 14, 32)        0
_________________________________________________________________
dropout_1 (Dropout)          (None, 14, 14, 32)        0
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 12, 12, 64)        18496
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 10, 10, 64)        36928
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 5, 5, 64)          0
_________________________________________________________________
dropout_2 (Dropout)          (None, 5, 5, 64)          0
_________________________________________________________________
flatten_1 (Flatten)          (None, 1600)              0
_________________________________________________________________
dense_1 (Dense)              (None, 128)               204928
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0
_________________________________________________________________
dense_2 (Dense)              (None, 10)                1290
=================================================================
Total params: 271,210
Trainable params: 271,210
Non-trainable params: 0

1 Ответ

0 голосов
/ 23 января 2019

Предполагая, что каждый параметр является 32-битным типом данных (с плавающей запятой одинарной точности, 4 байта). Ваше использование памяти должно быть где-то рядом: (число параметров) * 4B

В этом случае: 271 210 * 4B = 1084840B = ~ 1 МБ

Однако, важно помнить. Предполагается, что размер пакета равен 1, т.е. вы загружаете по 1 входу за раз. Если вы используете мини-пакет (типичный размер пакета 32 или 64), вам придется умножить это вычисление памяти на размер пакета. Если вы используете пакетный градиентный спуск , то, возможно, вы используете весь набор данных в каждой партии. В этом случае ваши требования к памяти могут быть огромными.

Этот анализ вдохновлен: https://datascience.stackexchange.com/questions/17286/cnn-memory-consumption

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...