Инициализация параметров

Для однослойного персептрона в качестве параметров нейронной сети в общем случае выступают веса входов и смещения. Допустим, что создается персептрон с двухэлементным вектором входа и одним нейроном:

net = newp([–2 2;–2 2],1);

Запросим характеристики весов входа:

net.inputweights{1, 1}

ans =

delays: 0

initFcn: 'initzero'

learn: 1

learnFcn: 'learnp'

learnParam: [ ]

size: [1 2]

userdata: [1´1 struct]

weightFcn: 'dotprod'

Из этого перечня следует, что в качестве функции инициализации по умолчанию
используется функция initzero, которая присваивает весам входа нулевые значения.

В этом можно убедиться, если извлечь значения элементов матрицы весов и смещения:

wts = net.IW{1,1}

wts = 0 0

bias = net.b{1}

bias = 0

Теперь переустановим значения элементов матрицы весов и смещения:

net.IW{1,1} = [3, 4]

net.b{1} = 5

wts = 3 4

bias = 5

Для того, чтобы вернуться к первоначальным установкам параметров персептрона,
и предназначена функция init:

net = init(net);

wts

wts = 0 0

bias

bias = 0

Можно изменить способ, каким инициализируется персептрон с помощью функции init. Для этого достаточно изменить тип функций инициализации, которые применяются для установки первоначальных значений весов входов и смещений. Например, воспользуемся функцией инициализации rands, которая устанавливает случайные значения параметров персептрона.

% Задать функции инициализации весов и смещений

net.inputweights{1,1}.initFcn = 'rands';

net.biases{1}.initFcn = 'rands';

% Выполнить инициализацию ранее созданной сети с новыми функциями

net = init(net);

wts = net.IW{1,1}

wts = –0.96299 0.64281

bias = net.b{1}

bias = –0.087065

Видно, что веса и смещения выбраны случайным образом.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: