Файл: Лабораторная работа 2 Дисциплина Программирование нейронных сетей.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 12.12.2023

Просмотров: 125

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
федеральное государственное бюджетное образовательное учреждение высшего образования«Вологодский государственный университет»Институт математики, естественных и компьютерных наук(наименование института)Кафедра «Автоматики и вычислительной техники»(наименование кафедры)ЛАБОРАТОРНАЯ РАБОТА2

Дисциплина

Программирование нейронных сетей

Преподаватель

Суконщиков А.А




(уч. степень, звание, должность. Ф.И.О)

Выполнил (а) студент

Копытов Р.Л




(Ф.И.О)

Группа, курс

РПС-31, 3 курс


Оценка по защите







(подпись преподавателя)
Вологда2023 г.Лабораторная работа № 2. Часть 1Персептроны и однослойные персептронные нейронные сетиЦель работы: изучение модели нейрона персептрона и архитектуры персептронной однослойной нейронной сети; создание и исследование моделей персептронных нейронных сетей в системе MATLABПорядок выполнения работы

Номер

варианта

Количество

входов

Диапазон

значений входов

Количество

нейронов в слое

2

2

–7…+7

3

Рисунок 1. Структурная схема персептронной нейронной сетиМоделирование персептронной нейронной сетиДля формирования однослойного персептрона в системе MATLAB предназначена функция newpnet=newp(PR, S) В формуле входными аргументами выступают:

  1. PR – массив диапазона значений вектора входа;

  2. S – число нейронов в слое.
По умолчанию веса и смещения равны нулю, поэтому необходимо установить значения весов w и смещение b. В данном задании элементы вектора входа передаются в сеть через матрицу весов W, имеющую вид:Каждый нейрон имеет смещение b, которое суммируется с значениями входов с учетом их веса. Результирующая сумма n для каждого нейрона равнаn1=w11*p1+w12*p2+b1 n2=w21*p1+w22*p2+b2 Эта сумма преобразуется функцией активации f, на выходе которой получаем выход нейрона а. Выходы слоя нейронов формируют вектор-столбец.Уравнение однослойного персептрона имеет вид a = f (Wp + b) где W – матрица весов,p – вектор входов,b – вектор смещения.Для реализации модели персептронной нейронной сети используем систему MATLAB.Код программы:% cоздание персептрона с диапазоном значений входов [-7..7] и 3 нейронами net = newp([-7 7;-7 7],3);% указание начальных значений весовnet.IW{1,1,1} = [-1, 0; 2, -2; 4, -5]; %присваивание переменной wts значений весовwts=net.IW{1,1,1}; % указание начальных значений смещенияnet.b{1} = [2;-1;3]; %присваивание переменной bias значений смещенийbias = net.b{1}; % указание диапазона значений входа р1 для построения ограничивающих линийp1 = [-7; 7];% расчет значений входа р2 для построения первой линииp2=(wts(1,1)*p1-bias(1))/wts(1,2); plot(p1,p2,'r') % расчет значений входа р3 для построения второй линии

p3=(wts(2,1)*p1-bias(2))/wts(2,2) % расчет значений входа р4 для построения третей линииp4=(wts(3,1)*p1-bias(3))/wts(3,2)hold onplot(p1,p2,p1,p3,p1,p4);p3 =6.5000-7.5000p4 =6.2000-5.0000%задание функции инициализации для весов и смещения>> net.inputweights{1,1,1}.initFcn = 'rands'; net.biases{1}.initFcn = 'rands'net =Neural Networkname: 'Custom Neural Network'userdata: (your custom info)dimensions:numInputs: 1numLayers: 1numOutputs: 1numInputDelays: 0numLayerDelays: 0numFeedbackDelays: 0numWeightElements: 9sampleTime: 1connections:biasConnect: trueinputConnect: truelayerConnect: falseoutputConnect: truesubobjects:input: Equivalent to inputs{1}output: Equivalent to outputs{1}inputs: {1x1 cell array of 1 input}layers: {1x1 cell array of 1 layer}outputs: {1x1 cell array of 1 output}biases: {1x1 cell array of 1 bias}inputWeights: {1x1 cell array of 1 weight}layerWeights: {1x1 cell array of 0 weights}functions:adaptFcn: 'adaptwb'adaptParam: (none)derivFcn: 'defaultderiv'divideFcn: (none)divideParam: (none)divideMode: 'sample'initFcn: 'initlay'performFcn: 'mae'performParam: .regularization, .normalizationplotFcns: {'plotperform', 'plottrainstate'}plotParams: {1x2 cell array of 2 params}trainFcn: 'trainc'trainParam: .showWindow, .showCommandLine, .show, .epochs,.time, .goal, .max_failweight and bias values:IW: {1x1 cell} containing 1 input weight matrixLW: {1x1 cell} containing 0 layer weight matricesb: {1x1 cell} containing 1 bias vectormethods:adapt: Learn while in continuous useconfigure: Configure inputs & outputsgensim: Generate Simulink modelinit: Initialize weights & biasesperform: Calculate performancesim: Evaluate network outputs given inputstrain: Train network with examplesview: View diagramunconfigure: Unconfigure inputs & outputsevaluate: outputs = net(inputs)>> net = init(net);>> wts = net.IW{1,1,1}, bias = net.b{1};wts = 0.4121 -0.9077 -0.9363 -0.8057 -0.4462 0.6469>> bias = net.b{1}bias = -0.2155 0.3110 -0.6576>> % проверка приналежности входного значения к классу 1 или 0 с помощью ограничивающих линийp1 = [-3; -2];a1 = sim(net,p1)a1 = 1 1 0>> p2 = [5; -1];a2 = sim(net,p2)a2 = 1 0 0>> p3 = [-1; -3];a3 = sim(net,p3)a3 = 1 1 0Рисунок 2 .Линии ограничения для входов персептронаВывод: в ходе выполнения курсовой работы я научился описывать модель персептрона в MATLAB. Ознакомился с моделью нейрона персептрона и архитектурой персептронной однослойной нейронной сети. А также в программе MATLAB я создал и исследовал модель однослойной персептронной нейронной сети, состоящей из 2 нейронов