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