- •Задание по курсу «Нейронные сети» Цель задания – овладение практическими навыками построения нейронной сети.
- •Методические указания по выполнению работы Распознавание рукописного текста Определение архитектуры нейронной сети
- •Инициализация нейронной сети.
- •Обучение нейронной сети Алгоритм обратного распространения ошибки
- •Алгоритм наискорейшего спуска
- •Подбор коэффициента обучения
- •Алгоритм обучения нейронной сети
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствии шума
- •Эффективность функционирования
- •Моделирование нейронной сети
Инициализация нейронной сети.
На этом этапе необходимо определить основные компоненты архитектуры сети. Функция 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
