Функция инициализации слоя Нгуена-Видрова
net = initnw(net,i)
initnw
является функцией инициализации слоя, которая инициализирует веса слоя и смещения согласно алгоритму инициализации Нгуена-Видрова. Этот алгоритм выбирает значения в порядке распределить активную область каждого нейрона в слое приблизительно равномерно через входной пробел слоя. Значения содержат степень случайности, таким образом, они не тот же каждый раз, когда эта функция вызвана.
initnw
требует, чтобы слой, который он инициализирует, имел передаточную функцию с конечным активным входным диапазоном. Это включает передаточные функции, такие как tansig
и satlin
, но не purelin
, активный входной диапазон которого является бесконечным интервалом [-inf, inf]
. Передаточные функции, такие как tansig
, возвратят свой активный входной диапазон можно следующим образом:
activeInputRange = tansig('active') activeInputRange = -2 2
net = initnw(net,i)
берет два аргумента,
net | Нейронная сеть |
i | Индекс слоя |
и возвращает сеть с весами i
слоя и смещает обновленный.
Существует случайный элемент к инициализации Нгуена-Видрова. Если случайный генератор по умолчанию не будет установлен в тот же seed перед каждым вызовом initnw
, это сгенерирует различный вес и сместит значения каждый раз.
Можно создать стандартную сеть, которая использует initnw
путем вызова feedforwardnet
или cascadeforwardnet
.
Подготовить пользовательскую сеть, которая будет инициализирована с initnw
,
Установите net.initFcn
на 'initlay'
. Это устанавливает net.initParam
на пустой матричный []
, потому что initlay
не имеет никаких параметров инициализации.
Установите net.layers{i}.initFcn
на 'initnw'
.
Чтобы инициализировать сеть, вызовите init
.
Метод Нгуена-Видрова генерирует начальный вес и значения смещения для слоя так, чтобы активные области нейронов слоя были распределены приблизительно равномерно по входному пробелу.
Преимущества перед чисто случайными весами и смещениями
Немного нейронов потрачены впустую (потому что все нейроны находятся на входном пробеле).
Обучение работает быстрее (потому что каждая область входного пробела имеет нейроны). Метод Нгуена-Видрова может только быть применен к слоям
Со смещением
С весами, weightFcn
которых является dotprod
С набором netInputFcn
к netsum
С transferFcn
, активная область которого конечна
Если эти условия не соблюдают, то initnw
использует rands
, чтобы инициализировать веса и смещения слоя.
cascadeforwardnet
| feedforwardnet
| init
| initlay
| initwb