С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++: ИИ, нейросети, ML, агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.74/187: Рейтинг темы: голосов - 187, средняя оценка - 4.74
 Аватар для Venera
8 / 7 / 0
Регистрация: 31.10.2008
Сообщений: 92

Нейронные сети, обучение персептрона с учителем

05.01.2010, 03:58. Показов 36774. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем счастливого нового года!!! мне срочно нужно персептрон обучить с учителем, кто с таким сталкивался? может поможете, буду очень благодарна! Пока не понимаю даже с чего начать
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.01.2010, 03:58
Ответы с готовыми решениями:

Обучить нейронную сеть типа персептрон
Всем привет. Может кто нибудь подсказать как делать именно это задание: Задать случайно значения точек в пространстве – по 10 в каждой из...

Стохастическое обучение персептрона
Всем привет! У меня тема курсовой работы "стохастическое обучение персептрона определения четности числа". Как сделать обучение я в...

Нейронные сети(персептрон)
Привет всем. Недавно начал изучать нейронные сети. Понравилось, очень интересно. Хочу реализовать для начала однослойный персептрон....

38
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2010, 10:10
Наверное самое простое - взять готовую библиотеку FANN(оно так в гугле набирается и первая же ссылка ведет на официальный сайт), и с её помощью уже делать нейросеть. Там есть и примеры, все очень просто.
Правда, я не знаю есть ли это перцептроном...
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2010, 12:04
А я считаю, что для того, чтобы лучше(легче) понять что такое нейросеть, проще написать эти 20(ну может чуть больше) строчек кода с тем же FANN и увидеть как оно там работает. Тогда на практику уже и теория может лечь, а если просто читать теоретические выкладки, то может показаться, что это настолько сложно, что лучше за это и не браться. Говорю по собственному опыту.
0
 Аватар для Venera
8 / 7 / 0
Регистрация: 31.10.2008
Сообщений: 92
05.01.2010, 18:04  [ТС]
Цитата Сообщение от Otaka Посмотреть сообщение
взять готовую библиотеку FANN
библиатеку качаю, буду думать что с ней делать дальше
Цитата Сообщение от Log Посмотреть сообщение
Для начала нужно понять теорему об обучении
Да я уже столько всякой всячины перечитала, теорию УЖЕ понимаю вроде! мне примера нормального понятного и простого не хватает. Вы мне мажете подсказать, где эти сети реализовать можно , вот думаю попробовать с распознаванием образов элементарных, но наверно я запарюсь?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
05.01.2010, 19:31
Лучший ответ Сообщение было отмечено как решение

Решение

Вот, смотри. Написал очень простой пример.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
struct fann *sfann;
//---------------------------------------------------------------------------
class CTrainData
{
public:
int input1,input2;
int output;
};
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
//Количество входных нейронов столько же, сколько и входных параметров
const unsigned int num_input = 2;
//Почему столько вот уровней? Без понятия, просто 3 это не 2 и не 5
const unsigned int num_layers = 3;
//--//--
const unsigned int num_neurons_hidden = 5;
//Выходных нейронов столько же, сколько и результатов.
const unsigned int num_output = 1;
//Инициализация
sfann = fann_create_standard(num_layers, num_input, num_neurons_hidden, num_output);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::btnTeachClick(TObject *Sender)
{
//Набиваем данные для тренировки. Таблица истинности основных булевых операций
CTrainData xor[4]={
{0,0,0},
{1,1,0},
{0,1,1},
{1,0,1}
};
CTrainData and[4]={
{0,0,0},
{0,1,0},
{0,1,0},
{1,1,1}
};
CTrainData or[4]={
{0,0,0},
{1,1,1},
{0,1,1},
{1,0,1}
};
 
CTrainData*selectedData;
switch(rgTrainingOperation->ItemIndex)
{
case 0:selectedData=and;break;
case 1:selectedData=or;break;
case 2:selectedData=xor;break;
}
 
 
float input[2];
float output[1];
//Много много раз запускаем нашу нейросеть в режиме тренировки. Задаем ей
//входные значения и то что должно получится на выходе. Сеть это запоминает.
for(int i=0;i<50000;i++)
  {
  int index=i%4;
  input[0]=selectedData[index].input1;
  input[1]=selectedData[index].input2;
  output[0]=selectedData[index].output;
  fann_train(sfann,input,output);
  }
ShowMessage("Обучение закончено");
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float input[2];
float*output;
//Грузим во входные параметры необходимые параметры
if(Edit1->Text=="1")
  {
  input[0]=1;
  }else
  {
  input[0]=0;
  }
if(Edit2->Text=="1")
  {
  input[1]=1;
  }else
  {
  input[1]=0;
  }
//Запускаем нейросеть
output = fann_run(sfann, input);
//читаем результат
Edit3->Text=FloatToStr(output[0]);
}
//---------------------------------------------------------------------------
В принципе, для этой задачи хватило бы и 2 нейронов, ну да ладно.
Заметь, в задаче у тебя написано "обучение перцептрона", а это по моему однослойная нейронная сеть, и она не может обучится функции XOR которая дана в примере. Этот пример может обучится этой функции, так как там есть еще один промежуточный слой.
Состояние сети можно запоминать в файл, а потом его загружать, чтобы не обучать сеть заново.

Распознавание изображений(если простеньких), то не так уж и сложно. У меня есть распознавалка каптчи на MegaUpload. Дает где-то 40%(когда как) верности. Работает на этой же библиотеке. Такое слабое качество распознавания, потому что я при обучении отобрал всего лишь около сотни каптчей и на их основе и учил.
Миниатюры
Нейронные сети, обучение персептрона с учителем  
Вложения
Тип файла: rar NeuroNetwork.rar (229.2 Кб, 1353 просмотров)
10
 Аватар для Venera
8 / 7 / 0
Регистрация: 31.10.2008
Сообщений: 92
06.01.2010, 12:26  [ТС]
Otaka, спасибо тебе большое за помошь, только у меня проблемка, я не могу поставить fann библиотеку накачала с инета литературу, на английском языке, честно сказать не сильно в нем шарю. Если тебе не трудно помоги

Добавлено через 25 минут
Скачала с того сайта, что ты посоветовал, файл fann-2.1.0beta, так внутри папочки разные, файлы из папки BorlandC++Builder6.0 я скопировала в папку по адресу C:\Program Files\Borland\CBuilder6\Lib\Obj, Чувствую себя как-то глупо наверно все неправильно сделала???
0
12 / 12 / 4
Регистрация: 14.12.2009
Сообщений: 33
07.01.2010, 03:21
Это означает, что какие бы значения ни приписывались весам и порогу, сеть неспособна воспроизвести соотношение между входом и выходом, требуемое для представления функции ИСКЛЮЧАЮЩЕЕ ИЛИ.
это про Персептрон из Ф. Уоссермен Нейрокомпьютерная техника

а в примере используеться xor, я не разбирался, но уже сомневаюсь что это персептрон
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
07.01.2010, 13:11
Наверное, если сделать сеть однослойной, то она не сможет научиться XOR функции. Вот тебе и будет перцептрон. Сделать её однослойной можно сделать в параметрах инициализации.

Добавлено через 5 минут
Цитата Сообщение от Venera Посмотреть сообщение
Скачала с того сайта, что ты посоветовал, файл fann-2.1.0beta, так внутри папочки разные, файлы из папки BorlandC++Builder6.0 я скопировала в папку по адресу C:\Program Files\Borland\CBuilder6\Lib\Obj, Чувствую себя как-то глупо наверно все неправильно сделала???
Распакуй файлы из BorlandC++Builder6.0 в папку lib, а потом скопируй файлы из FANN/src/include в CBuilder/include.
Потом когда создашь проект, нажми в меню "Project/add to project" и из папки lib добавь файлик libfann.lib. После этого все должно работать.
0
 Аватар для Venera
8 / 7 / 0
Регистрация: 31.10.2008
Сообщений: 92
07.01.2010, 17:50  [ТС]
Otaka, Сделала все как ты сказал, с последним пунктом возникла проблемка, я файла libfann.lib не нашла, “Поиск” тоже результатов не дал, при компиляции вываливается ошибка
[Linker Fatal Error] Fatal: Unable to open file ’LIBFANN.LIB’ но я думаю это нормально
Отправь мне файлик libfann.lib, пожалуйста.
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
07.01.2010, 17:57
Бери всю библиотечку.
Вложения
Тип файла: rar fann_fix.rar (226.5 Кб, 745 просмотров)
1
101 / 101 / 19
Регистрация: 29.12.2009
Сообщений: 204
07.01.2010, 17:58
Venera, в папке BorlandC++Builder6.0 есть файл libfann.bpr - открой его в билдере и выполнь Make - получится libfann.lib
это всё лучше сделать до переноса всего этого в папку с билдером (т.е распаковать весь архив fann-2.0.0.zip и собрать библиотеку)
0
 Аватар для Venera
8 / 7 / 0
Регистрация: 31.10.2008
Сообщений: 92
07.01.2010, 18:19  [ТС]
Otaka, заменила свои файлы твоими и у меня все заработало!!!!!!!!!!!!!
все , буду программировать
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2010, 17:39
Цитата Сообщение от Otaka Посмотреть сообщение
У меня есть распознавалка каптчи на MegaUpload
А по какому принципу строилась сеть?

Количество входов совпадает с количеством точек на изображении. На каждый вход подаётся число от 0 до 255, соответствующее яркости соответствующей точки (предполагаю, что изображение чёрно-белое), а на выходе формируется последовательность байтов, кодирующая строку. Типа того или как-то по другому?
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
07.02.2010, 17:48
Почти так. Сначала повышается контрастность, чтобы было только белое и черное, потом изображение режется на буквы, потом уменьшается, потом каждая точка отправляется на свой нейрон, а потом с выхода берется значение буквы. Кстати, выходов столько же, сколько и букв алфавита, поэтому я смотрю на каком выходе максимальное значение, и беру его индекс.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2010, 18:27
Цитата Сообщение от Otaka Посмотреть сообщение
потом изображение режется на буквы
Если оно режется - то это гораздо проще. Просто сейчас куча картинок, где буквы переплетаются

Цитата Сообщение от Otaka Посмотреть сообщение
потом уменьшается, потом каждая точка отправляется на свой нейрон, а потом с выхода берется значение буквы. Кстати, выходов столько же, сколько и букв алфавита, поэтому я смотрю на каком выходе максимальное значение, и беру его индекс.
Если выходов столько же, сколько букв, то что подаётся в качестве эталонного ВЫХодного сигнала при обучении?

Добавлено через 5 минут
И можешь пример ихней картинки, чтоб хоть видно было, что это. А то пример ссылки с ходу в гугле так и не нарыл
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
07.02.2010, 18:35
Я знаю, в той каптче ведь тоже переплетается, вот поэтому качество распознавания у меня около 30-40 процентов, но мне достаточно. А что было при изначальном обучении? Я скачал около сотни каптчей, вручную их распознал в файлик, а потом в цикле учил нейросеть.
А вот и пример каптчей(их тут 5 штук, а не одна)
Если честно, это каптчи из папки "BadCaptcha"(читай то, что не распозналось).
Изображения
     
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2010, 18:38
Ещё раз повторю вопрос
Если выходов столько же, сколько букв, то что подаётся в качестве эталонного ВЫХодного сигнала при обучении?

А нарезаешь на отдельные буквы - это просто делишь картинку на 4 равных куска?

Добавлено через 1 минуту
Я к чему всё это. Я распознавалки писать не собираюсь. Просто есть конкретный более-менее живой пример потребности, хочу понять, что для этого должно подаваться на вход, а что приниматься на выход
0
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
07.02.2010, 18:42
На четыре если быть более точным(4 буквы в каптче).
Выходной сигнал который я устанавливал сетке для запоминания:
Пример
A
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
B
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Надеюсь ты это хотел узнать?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
07.02.2010, 18:42
Цитата Сообщение от Evg Посмотреть сообщение
Ещё раз повторю вопрос
Если выходов столько же, сколько букв, то что подаётся в качестве эталонного ВЫХодного сигнала при обучении?
Дочитал до описания принципа "победитель получает всё". Собственно, этот вопрос снимаю
0
 Аватар для VorteX
172 / 96 / 12
Регистрация: 29.05.2009
Сообщений: 341
07.02.2010, 19:39
Почитал про нейронные сети, очень интерестно.
Можете ктонить посоветовать какуюнить обучалку, статьи по той теме связанные с С++?на русском желательно, Хочеться поразбираться в этой теме, не наю с чего начать...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2010, 19:39
Помогаю со студенческими работами здесь

Обучение нейронной сети - алгоритм обратного распространения ошибки(learning_tree)
struct SAcson { int l,c; // строка, столбец float x; // заряд }; struct SSinapc { int l,c; // строка, столбец }; ...

Нейронная сеть, обучение с нуля
Нужен совет экспертов с чего начать. Бегло читала про библиотеки ИИ и остановилась на двух tensorflow и caffe2. Пишу на С++, поэтому...

Обучение нейронной сети методом обратного распространения ошибки
пишу нейронную сеть типа многослойный персептрон, для решения задачи аппроксимации функции. Знаю что есть много ресурсов с готовым...

Как же обучать автокодировщик? Непонятная ситуация с обучением нейронной сети
Доброго времени суток! Сразу к делу. Пытаюсь использовать метод обратного распространения ошибки при обучении автокодировщика. Обучаю на...

Использование модуля для обучения нейронной сети распознаванию образов
Составить программу, которая использует модуль для обучения нейронной сети распознаванию образов С++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru