pr neiron
.docxМинистерство цифрового развития, связи и массовых коммуникаций
Российской Федерации
Федеральное государственное бюджетное образовательное
учреждение высшего образования
«Санкт-Петербургский государственный университет телекоммуникаций
им. проф. М. А. Бонч-Бруевича»
_____________________________________________________________________________
Кафедра РАДИОТЕХНИКИ
Дисциплина «Технологии распознавания изображений и компьютерное зрение»
Практическая работа №4
«Перцептрон»
Выполнили: студенты группы РТ-22ы,
бригада № 6
Спица М.А.
Стулин П.А.
Сараева Л.В.
Швецов Ф.П.
Проверил: к.т.н. доцент каф. РТ,
Коровин К.О.
________________________
Санкт-Петербург
2026
Теория:
Персептрон — это тип нейрона, входные сигналы которого связаны с весами (Розенблатт, 1958). Если входной вектор равен X, а веса соответствуют вектору W, то дополнительно объединенный входной сигнал I определяется следующим соотношением, где b — вес, связанный с линией смещения с сигналом логической 1.
Персептроны связаны с этапом обучения и этапом тестирования, для которых весь набор данных разделен на две части: обучающий набор и тестовый набор. Для обучающего набора известна информация о классе точек данных, которые называются целевыми значениями.
Однослойные прецептроны, соединяющим как вход, так и выход, и могут решать только линейно разделяемые задачи, т.е. когда входное пространство может быть разделено прямой линией на две зоны, для которых выходные данные будут разными. Для более сложных задач, требующих нелинейного разделения, требуются многослойные персептроны (MLP), где между входом и выходом имеется один или несколько скрытых слоев (Bishop, 2005).
Для более сложных задач, требующих нелинейного разделения, требуются многослойные персептроны (MLP), где между входом и выходом имеется один или несколько скрытых слоев (Bishop, 2005). MLP также называется нейронная сеть с прямой связью (FNN), поскольку сигнал распространяется в прямом направлении от входного слоя через скрытые слои к выходному слою
В следующем примере три символа A, B, C, созданные из сетки двоичных чисел, обучаются с помощью системы распознавания на основе перцептрона, которая затем используется для распознавания трех ухудшенных версий те же персонажи. Каждый символ состоит из сетки из семи столбцов и девяти строк, фон представлен белым, а символы — черным. Поскольку перцептрон имеет только один выход, система предназначена для распознавания только одного символа, в данном случае A. При подаче на вход системы символы преобразуются в вектор из 63 элементов, для которого должно быть 63 элемента. входные элементы в перцептрон. Входная матрица состоит из 63 строк и трех столбцов для трех символов, а выходной вектор равен [1,0,0] для распознавания символа A. После обучения системы снова подается тестовый набор в виде 63 x 3 матрица. Если система правильно распознает символы, то ожидаемый результат должен быть [1, 0, 0].
Задание 1: Разработать модель перцептрона для распознавания букв
Рис.1 Идеальные данные для обучения
Рис.2 Данные для обработки
Листинг кода в MATLAB:
clear; clc;
a=[1 1 0 0 1 1 1; 1 1 1 0 1 1 1; 1 1 1 0 1 1 1; 1 1 0 1 0 1 1; 1 1 0 1 0 1 1; 1 0 0 0 0 0 1; 1 0 1 1 1 0 1; 1 0 1 1 1 0 1; 0 0 0 1 0 0 0];
b=[0 0 0 0 0 0 1; 1 0 1 1 1 1 0; 1 0 1 1 1 1 0; 1 0 1 1 1 1 0; 1 0 0 0 0 0 1; 1 0 1 1 1 1 0; 1 0 1 1 1 1 0; 1 0 1 1 1 1 0; 0 0 0 0 0 0 1];
c=[1 1 0 0 0 0 0; 1 0 1 1 1 1 0; 0 1 1 1 1 1 1; 0 1 1 1 1 1 1; 0 1 1 1 1 1 1; 0 1 1 1 1 1 1; 0 1 1 1 1 1 1; 1 0 1 1 1 1 0; 1 1 0 0 0 0 0];
na=[1 1 1 0 1 1 1; 1 1 0 0 1 1 1; 1 1 1 0 1 1 1; 1 1 0 1 0 0 1; 1 1 0 1 0 1 1; 1 0 1 0 0 0 1; 1 0 1 1 1 0 1; 1 0 1 1 1 0 1; 0 1 0 1 0 1 0];
nb=[1 0 0 0 0 0 1; 1 1 1 1 1 1 0; 1 0 1 1 1 1 0; 1 0 1 1 0 1 0; 1 0 0 0 0 0 1; 1 0 0 1 1 1 0; 1 0 1 1 1 1 0; 1 0 1 1 1 1 0; 0 0 0 0 0 0 1];
nc=[1 1 1 0 0 0 0; 1 0 0 1 1 1 0; 0 1 1 1 1 1 1; 0 0 1 1 1 1 1; 1 1 1 1 1 1 1; 0 1 1 1 1 1 1; 0 1 1 1 1 1 1; 1 0 1 1 1 0 0; 1 1 0 0 0 0 0]
%%%%% Графики
figure(10),
subplot(2,3,1), imshow(a);
subplot(2,3,2), imshow(b);
subplot(2,3,3), imshow(c);
subplot(2,3,4), imshow(na);
subplot(2,3,5), imshow(nb);
subplot(2,3,6), imshow(nc);
a=a(:);
b=b(:);
c=c(:);
x = [a b c];
t = [0 1 0];
p2 = perceptron;
p2 = train(p2,x,t);
view(p2)
y = p2(x) ;
na=na(:);
nb=nb(:);
nc=nc(:);
nx=[na nb nc];
ny=p2(nx)
save abc.mat x nx
Результат работы скрипта: ny = 0 1 0
Задание 2: Разработать модель многослойного перцептрона
Листинг кода в MATLAB:
clear;
clc;
[m, t] = iris_dataset;
x = m(3:4,:);
nn = patternnet (10);
nn = train (nn, x, t);
view (nn)
q = [4, 1.5];
y = round(nn(x))
Y = round (nn(q'))
x = x';
load fisheriris;
gscatter (x(:,1), x(:,2), species);
hold on;
plot (q(1), q(2), 'ko');
Результат работы скрипта: Y = 0 1 0
Рис. 1. Выходные данные персептрона
Рис. 2. Схема FNN
Рис. 3. Матрица ошибок
