На моем dell core i7 - 16 ГБ ОЗУ - 4 ГБ 960-метровый ноутбук с графическим процессором я работаю над проектом по классификации изображений КТ легких с использованием 3D CNN. Я использую процессорную версию tenorflow. Изображения подготовлены как размер массива (25,50,50).
В моей модели CNN было 2 слоя конвона, два слоя maxpool, один слой FC и выходной слой. С этой архитектурой я мог обучить модель приблизительно (от 5000 до 6000) образцов. После добавления дополнительных слоев моя модель теперь имеет 6 слоев конвоя, 3 слоя максимального пула, FC и выходной слой. Моя проблема в том, что после изменения архитектуры с более чем 1000 выборок моя память заполняется, и я получаю ошибку памяти. Я пытался делать меньшие партии, но каждый раз получал одну и ту же ошибку. У меня есть два вопроса:
Почему при добавлении большего количества слоев модели требуется больше памяти?
Есть ли способ решить эту проблему?
источник
Ответы:
Чем больше слоев, тем больше параметров для вашей сети, что, в свою очередь, означает, что в памяти требуется больше места для хранения этих параметров.
Единственное решение (помимо увеличения памяти вашего компьютера) - это уменьшение размера вашей сети. Несколько указаний на это: во-первых, 3-D CNN требуют намного больше места, чем 2-D. Одной из идей может быть переход на двумерную. Кроме этого, слои с наибольшим количеством параметров являются слоями FC. Это иногда избыточно. Я бы посоветовал сначала уменьшить их размер.
источник
В дополнение к этому
MzdR
, вы также можете попробовать использовать генераторы. Поскольку вашей модели на самом деле не понадобится хранить все ваши изображения в памяти во время тренировок, я думаю, что генератор должен хорошо работать.Проверьте этот вопрос из stackoverflow. Генераторы довольно крутые, когда вы заключаете сделку с памятью. Но если и это не поможет, попробуйте уменьшить размер ваших слоев FC.
источник