Позвольте мне дать некоторые основные рекомендации, чтобы вы начали.Вы должны быть в состоянии выполнить домашнее задание.
Предположим, у нас есть нейронная сеть с n
входами, скрытым слоем h
нейронов и m
выходов.Всего у нас есть много нейронов:
nbNeurons = h + m.
Теперь объем памяти, который занимает нейрон, равен O(w)
, где w
- количество входов, которые получает нейрон.Причина в том, что нейрон имеет один вес на вход плюс некоторую дополнительную информацию, такую как bias
, learning rate
, output
, error
.Поскольку все они ограничены константой, объем памяти, требуемый одним нейроном, пропорционален количеству весов, т. Е. Входам.
В скрытом слое имеется h
нейронов с n
входами в каждом, поэтомуему нужно h*O(n)
единиц памяти.Выходной слой имеет m
нейронов с h
входами каждый, следовательно, m*O(h)
.Таким образом,
memory = h*O(n) + m*O(h) = O(h*n) + O(m*h) = O((n+m)*h)
Питание нейрона с k
входами требует k
умножений плюс k+1
сложений + 1
оценки сигмовидной (или подобной) функции.Это явно пропорционально k
и, следовательно, O(k)
.
Питание нашей сети требует подачи h
скрытых нейронов с n
входами каждый, следовательно, h*O(n)
плюс подача m
выходных нейронов с h
входов каждый, m*O(h)
.Итак,
feed time = h*O(n) + m*O(h) = O((n+m)*h)
Теперь продолжайте и продолжайте в том же духе, чтобы подсчитать количество операций, необходимых для распространения ошибок обратно при обучении сети с одной выборкой ваших обучающих данных.Вы подпитаете сеть образцом, а затем отрегулируете вес и смещение каждого нейрона.Наконец, умножьте это количество на количество эпох (поскольку вы будете повторять один и тот же набор операций много раз).