Пытается подготовить классификатор с повторяющимся слоем, используя множество данных. В результате все данные не могут вписаться в память. Это дает мне следующее сообщение об ошибке:Как я могу обучить нейронную сеть большим количеством данных, чем может поместиться в память?
Error using zeros
Requested 1x2114046976 (15.8GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long
time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
Error in nnMex.perfsGrad (line 3)
TEMP = zeros(1,ceil(hints.tempSizeBG/8)*8);
Error in nnCalcLib/perfsGrad (line 294)
lib.calcMode.perfsGrad(calcNet,lib.calcData,lib.calcHints);
Error in trainscg>initializeTraining (line 153)
[worker.perf,worker.vperf,worker.tperf,worker.gWB,worker.gradient] = calcLib.perfsGrad(calcNet);
Error in nnet.train.trainNetwork>trainNetworkInMainThread (line 28)
worker = localFcns.initializeTraining(archNet,calcLib,calcNet,tr);
Error in nnet.train.trainNetwork (line 16)
[archNet,tr] = trainNetworkInMainThread(archNet,rawData,calcLib,calcNet,tr,feedback,localFcns);
Error in trainscg>train_network (line 147)
[archNet,tr] = nnet.train.trainNetwork(archNet,rawData,calcLib,calcNet,tr,localfunctions);
Error in trainscg (line 59)
[out1,out2] = train_network(varargin{2:end});
Error in network/train (line 369)
[net,tr] = feval(trainFcn,'apply',net,data,calcLib,calcNet,tr);
Следует отметить, что в настоящее время моего вклад обучения 11x52266 и сеть имеет ~ 3k элементы веса из-за очередной слой. Я бы хотел, однако, предоставить в 15 раз больше данных для обучения.
Как я могу справиться? Существуют ли какие-либо методы для сопоставления локальной переменной, которую она пытается инициализировать на моем SSD вместо памяти?
Существует вариант «сокращения» для обучения, но, похоже, он не имеет никакого отношения к этому вопросу. Такая же ошибка возникает независимо.
Отказ от ответственности: я не являюсь пользователем Matlab: Является ли ваш размер 11 или 52266? (на мой взгляд, обычный формат - это образцы X-функций). Почему некоторый внутренний массив растет вместе с продуктом ваших данных и весами (это не имеет для меня смысла, размеры сети/данные не зависят от выборки -size (за исключением размера пакета), возможно, это возможно, если используется внутренний алгоритм с полным пакетом = полный градиент, чем LBGFS, но это сделает невозможным такой размер данных, вам нужны методы на основе SGD)? Хорошо разработанные библиотеки поддерживают некоторый метод fit_on_batch (не уверен, что поддерживает ваша библиотека). – sascha
И стратегия использования SSD вместо RAM не кажется многообещающей. Это трудно абстрагироваться внутренне, поэтому маловероятно, что ваше программное обеспечение поддерживает его. И это было бы слишком медленно, я думаю. (и я все еще думаю, что здесь есть что-то другое, см. другой комментарий) – sascha
@sascha Я согласен с вами в этом вопросе, но реализация нейронной сети Matlab поддерживает функции x samples. Ответ user20160 и мой комментарий могут прояснить и предложить решение, но Matlab имеет реализацию для: (следующий комментарий) –