Как можно обучать нейронную сеть, используя данные из скользящего окна?
У меня есть датасет 150x2,000,000, где строки обозначают последовательные моменты времени. При этом на вход нейронной сети будут подаваться таблицы 150x10,000.
Я хотел бы обучить модель на строках [0, 9999], [1, 10000], [2, 10001]... исходного датасета, но очевидно я не могу хранить их в чистом виде.
Как я могу обучать свою модель последовательно на этих "окнах"?
В данный момент я использую Keras.Sequential, но вообще хотелось бы узнать принцип, применимый не только для данной модели.
Вопрос не про машинное обучение, а про выбор механизмов хранения данных и эффективного их чтения.
У тебя датасет 150x2000000 чисел? для float это чуть больше гигабайта, держи в оперативной памяти просто двумерным массивом
Если на формирование обучающей выборки тратится времени сравнимо с собственно этапом прогона нейронной сети, то формируй ее в соседнем потоке, складывая несколько заранее подготовленных в очередь
Вопрос скорее по то, как именно стоит идти по данным и не "сломается" ли обучение, если я просто буду дообучать модель по одному набору данных. В данный момент датасет хранится в датафрейме, поэтому также интересно, будут ли страдать скорость и память, если я буду использовать встроенный dataframe.rolling.
На сколько я знаю, все зависит от типа нейронной сети
Сети с памятью (т.е. те у которых внутренние связи могут возвращаться назад) зависят от того, в каком порядке им дают данные.
Мое имхо, для сетей без памяти порядок подачи данных не важен, но важно, как много раз сети давали один и тот же обучающий вектор. Каждый раз когда сеть прогоняют по обучающей выборке, она делает шаг в многомерном пространстве весов сети, выбор, какие данные ей дают определяют как будет она выходить из локальных минимумов
Я например воспринимаю прогон сети по другим данным как если бы горы (x,y - вектор весов сети, высота - значение ошибки, мы идем по дну ищем низшую точкеу) стали проходимы и мы перешагиваем в соседние каньоны.
Недостаток - если какие то обучающие данные дают сети чаще - появляется предпосылка для переобучения сети именно ими.