Функция инициализации слоя Нгуена-Видрова
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