Я пытаюсь обучить нейронную сеть (backprop + gradient descent) в python с функциями, которые я строю поверх книг Google 2 грамма (английский), это в итоге будет около миллиарда строк данных с 20 функциями каждой строки. Это будет легко превышать мою память и, следовательно, использование массивов в памяти, таких как numpy, не будет вариантом, так как это требует загрузки полного набора тренировок.Обработка массива больше, чем память для обучения нейронной сети в python
Я искал карту памяти в numpy, которая могла бы решить проблему для входного слоя (который только для чтения), но мне также нужно будет хранить и обрабатывать мои внутренние слои в сети, что требует обширных данных для чтения/записи и рассмотрения размер данных, производительность чрезвычайно важна в этом процессе, так как может сэкономить дни обработки для меня.
Есть ли способ обучить модель без необходимости загружать полный набор тренировок в память для каждой итерации минимизации затрат (потерь)?
Это очень напоминает Фродо: «Я возьму Кольцо в Мордор ... ... если кто-нибудь покажет мне дорогу ...» Без изучения основ вы потерпите неудачу. Что касается MongoDB, начните с документов, особенно для [структуры агрегации] (https://docs.mongodb.org/manual/aggregation/) и [sharding] (https://docs.mongodb.org/manual/core/Sharding введение /). –
Вы можете попробовать использовать стохастический градиентный спуск. В каждую эпоху вам не обязательно проходить через весь тренировочный набор. Скорее, вы можете случайным образом выбрать 1000 записей набора данных в каждую эпоху. – jorgenkg
@jorgenkg, спасибо за ваш комментарий, стохастический градиентный спуск будет отличным подходом, он также позволит одновременно обучать сеть на кластерах. – mdabiri