Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДЗ по нейронным сетям.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

Инициализация нейронной сети.

На этом этапе необходимо определить основные компоненты архитектуры сети. Функция network создает пустую искусственную нейронную сеть.

Функция MatLab.

function net = network(numInputs, numLayers, biasConnect, inputConnect, layerConnect, outputConnect)

% NULL NETWORK

net.name = 'My network';

net.numInputs = numInputs; % Число входных нейронов

net.numLayers = numLayers; % Число слоев

net.biasConnect = zeros(numLayers, 1); % Логический вектор весовых коэффициентов связи с предыдущим слоем

net.inputConnect = ones(numLayers, numInputs); % Логический вектор весовых коэффициентов связи с предыдущим слоем

net.layerConnect = zeros(numLayers, numLayers); % Логический вектор весовых коэффициентов связи с предыдущим слоем

net.outputConnect = zeros(1, numLayers); % Логический вектор выходов

%net.targetConnect = []; % Целевой логический вектор

net.numOutputs = 2; % Количество выходов

net.numTargets = 2; % Количество целей

net.inputs = cell(0,1); % Массив входов

net.layers = cell(0,1); % Массив слоев

net.biases = cell(0,1); % Массив смещений

net.inputWeights = cell(0,0); % Матрица весовых коэффициентов

net.layerWeights = cell(0,0); % Матрица весовых коэффициентов

net.outputs = cell(1,0); % Массив выходов

net.targets = cell(1,0); % Массив целей

net.initFcn = ''; % Название функции инициализации сети или ''

net.initParam = []; % Параметры инициализации сети

net.performFcn = ''; % Название функции производительности сети или ''

net.performParam = []; % Параметры функционирования сети

net.trainFcn = ''; % Название функции обучения сети или ''

net.trainParam = []; % Параметры обучения сети

net.IW = {}; % Массив ячеек значений входных весовых коэффициентов

net.LW = {}; % Массив ячеек из значений веса слоя

net.b = cell(0,1); % Массив ячеек значений смещения

% CLASS

net = class(net,'network');

% ARCHITECTURE

net = setnet(net,'name',net.name);

net = setnet(net,'numInputs',numInputs);

net = setnet(net,'numLayers',numLayers);

net = setnet(net,'biasConnect',biasConnect);

net = setnet(net,'inputConnect',inputConnect);

net = setnet(net,'layerConnect',layerConnect);

net = setnet(net,'outputConnect',outputConnect);

net = setnet(net,'targetConnect',targetConnect);

end

%=============================================================

function net = setnet(net,field,value)

subscripts.type = '.';

subscripts.subs = field;

net = subsasgn(net,subscripts,value);

end

% Функция newff создает нейронную сеть обратного распространения.

function net = newff(pr,s,tf,btf,blf,pf)

%btf = 'traingdxx';

blf = 'learngdm';

pf = 'sse';

% Architecture

numInputs = 256;

numLayers = 2;

net = network(numInputs, numLayers, zeros(numLayers, 1), ones(numLayers, numInputs), zeros(numLayers, numLayers), [0 1]);

%net = network(1,N1);

net.biasConnect = ones(numLayers, 1);

%net.inputConnect(1,1) = 1;

[j,i] = meshgrid(1:numLayers, 1:numLayers);

net.layerConnect = (j==(i-1));

net.outputConnect(numLayers) = 1;

%net.targetConnect(N1) = 1;

% Simulation

net.inputs{1}.range = pr;

for i = 1:numLayers

net.layers{i}.size = s(i);

net.layers{i}.transferFcn = tf{i};

end

% Performance

net.performFcn = pf;

% Adaption

net.adaptFcn = 'trains';

net.inputWeights{1,1}.learnFcn = blf;

for i = 1:numLayers

net.biases{i}.learnFcn = blf;

net.layerWeights{i,:}.learnFcn = blf;

end

% Training

net.trainFcn = blf;

% Initialization

net.initFcn = 'initlay';

for i = 1:numLayers

net.layers{i}.initFcn = 'initnw';

end

net = init(net);

end