У меня есть нейронная сеть с архитектурой 1024, 512, 256, 1
(входной уровень имеет 1024
единиц, выходной уровень имеет 1
единиц и т. Д.). Я хотел бы обучить эту сеть, используя один из алгоритмов оптимизации в scipy.optimize
.Работа с проблемами памяти в сети со многими весами
Проблема в том, что эти алгоритмы ожидают, что параметры функции будут заданы в одном векторе; это означает, что в моем случае, я должен разворачивать все веса в векторе длины
1024*512 + 512*256 + 256*1 = 655616
Некоторые алгоритмы (как fmin_bfgs
) необходимо использовать единичные матрицы, поэтому они делают вызов, как
I = numpy.eye(655616)
который, не очень удивительно, производит MemoryError
. Есть ли какой-то способ для меня избежать необходимости развернуть все веса в один вектор, не дожидаясь адаптации алгоритмов в scipy.optimize
к моим собственным потребностям?
Вау, это много весов, чтобы соответствовать. (+1) – NPE
@NPE Я должен признать, что я действительно не знаю, что делаю. Я тренируюсь на изображениях размером 32x32. Должен ли я сделать изображения еще меньше? –
Затем, уменьшив размер изображений до «16x16» и используя архитектуру «256, 128, 1', я бы все еще имел и развернул вектор веса длины« 32896 ». –