Форум программистов, компьютерный форум, киберфорум
C++: ИИ, нейросети, ML, агенты
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40

Нейронные сети на C++

01.05.2019, 17:22. Показов 19253. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Решил начать изучать нейронки, попытался обучить нейросеть с обратным распространением ошибки. Обучение с учителем. Так вот, почему то когда в целевом векторе значение 0, тогда ошибка нейросети уменьшается, а при 1 увеличивается, вроде все как по учебнику делал. ПОмогите разобраться.
Для того чтобы понять правильно ли обучается сеть я решил не загружать много данных, а посмотреть как ведет себя программа на 30 парах, но как я понимаю, она ведет себя не так, как хотелось бы.
в коде много грязи и он не дописан, вплане условий, мне главное сейчас понять, как сделать так, чтобы сеть обучалась правильно, а потом уже буду основательно его переделывать. Что я делаю не правильно на данный момент, подскажите.
Вот код:
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
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
//#include <graphics.h>
#include <conio.h>  // getch
#include <ctype.h>
#include <iostream>
#include <cmath> 
#include <ctime>
using namespace std;
float activ_fun(float NET)
{
    return 1 / (1 + exp(-NET));
}
float proizvod_activ_fun(float OUT)
{
    return OUT*(1 - OUT);
}
int main()
{
    
    float w1_1 = 0.3273, w1_2 = 0.2834, w1_3 = 0.5329;
    float w2_1 = 0.3542, w2_2 = 0.4374, w2_3 = 0.3202;
    float h = 0.6, cel = 0, delta_1 = 0, correctirovka_1 = 0, delta_2 = 0, correctirovka_2 = 0;
    float b1_1 = 0, b1_2 = 0, b1_3 = 0, b2_1 = 0;
    float vxod[27] = { 1.525296838, 0.464641648, 1.730666158, 0.267464594, 1.56444614,
                       0.526441276, 1.708979066, 0.648323876, 1.197653903, 0.075771303, 1.349625674,
                       0.394258738,1.400553145, 0.465213867, 1.525869057, 0.709551285,1.708979066, 
                       0.708406848, 1.709551285,0.647751657, 1.930666158, 0.267464594, 
                       1.56444614,0.197653903, 1.075771303, 0.394258738,1.400553145 };
    float vyxod[27] = { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1 };
    for (int i = 0; i < 27; i++)
    {
        b1_1 = vxod[i] * w1_1;
        b1_2 = vxod[i] * w1_2;
        b1_3 = vxod[i] * w1_3;
        b1_1 = activ_fun(b1_1);
        b1_2 = activ_fun(b1_2);
        b1_3 = activ_fun(b1_3);
        b2_1 = b1_1*w2_1 + b1_2*w2_2 + b1_3*w2_3;
        b2_1 = activ_fun(b2_1);
        //cout << b2_1;
        cel = vyxod[i] - b2_1;
        cout << cel << endl;
        //if (cel > 0.0005)
        //  {
            delta_1 = -cel* proizvod_activ_fun(b2_1);
            correctirovka_1 = -delta_1*h*b1_1;
            w2_1 = w2_1 + correctirovka_1;
            correctirovka_1 = -delta_1*h*b1_2;
            w2_2 = w2_2 + correctirovka_1;
            correctirovka_1 = -delta_1*h*b1_3;
            w2_3 = w2_3 + correctirovka_1;
 
            //vtorye vesa
            delta_2 = proizvod_activ_fun(b1_1)*delta_1*w2_1;
            correctirovka_2 = -delta_2*vxod[i] * h;
            w1_1 = w1_1 + correctirovka_2;
            delta_2 = proizvod_activ_fun(b1_2)*delta_1*w2_2;
            correctirovka_2 = -delta_2*vxod[i] * h;
            w1_2 = w1_2 + correctirovka_2;
            delta_2 = proizvod_activ_fun(b1_3)*delta_1*w2_3;
            correctirovka_2 = -delta_2*vxod[i] * h;
            w1_3 = w1_3 + correctirovka_2;
            //cout << w1_1 << endl;
            //cout << w1_2 << endl;
            //cout << w1_3 << endl;
            //cout << w2_1 << endl;
            //cout << w2_2 << endl;
            //cout << w2_3 << endl;
         // }
        //else
        //{
        //  break;
        //}
        
        //cout << b2_1<< " ";
    }
    float k = 1.56444614;
    b1_1 = k * w1_1;
    b1_2 = k * w1_2;
    b1_3 = k * w1_3;
    b1_1 = activ_fun(b1_1);
    b1_2 = activ_fun(b1_2);
    b1_3 = activ_fun(b1_3);
    b2_1 = b1_1*w2_1 + b1_2*w2_2 + b1_3*w2_3;
    b2_1 = activ_fun(b2_1);
    cout << b2_1;
    return 0;
}
Добавлено через 3 минуты
Сеть у меня с тремя нейронами в скрытом слое и 1 выходным нейроном.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2019, 17:22
Ответы с готовыми решениями:

Нейронные сети (адаптивные сети)
нужен исходник 3д или 2д адаптивной сетки для небольшого использования в своей работе (растягивалась что бы на какуюнить фигуру на...

Нейронные сети
Добрый вечер, товарищи. Прошу у вас помощи по нейронным сетям. Есть обучающие выборка, там массивы данных (в 50-300 элементов...

Нейронные сети
Недавно открыл для себя тему нейросетей, и хотел бы спросить ресурс где бы я смог довольствоваться достаточным количеством практики. Тобишь...

71
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.06.2019, 15:04
Студворк — интернет-сервис помощи студентам
Sukharev_K, чё за датчики? чё за дигностирование?
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
27.06.2019, 15:31  [ТС]
Ну это не особо важно, суть в том, что мне нужно решить две задачи с помощью ИНС, эта задача диагностирования и задача прогнозирования, и вот какие ИНС оптимально подходят для решения этих задач.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.06.2019, 15:33
Sukharev_K, ну, значит не важно какие ИНС.
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
27.06.2019, 15:43  [ТС]
То есть информация о датчиках в корне может поменять тип ИНС?

Добавлено через 54 секунды
Как бэ я ток начинаю с ИНС разбираться, поэтому не судите строго, если эта инфрмация важно для ответа на вопрос, то могу ее предоставить.

Добавлено через 6 минут
На оборудование установлены разные датчики: к примеру датчик вибрации: давления, температуры на поршнях. данные с датчиков в базы данных. На основании значений с датчиков охото решить задачу прогнозирования работоспособности оборудование, т.е. как оно поведет себя в дальнейшем при актуальной работе. Либо определить какой механизм в скором времени выйдет из стря и что то в этом духе.
Насчет задачи диагностирования: По актуальным данным планируется диагностировать правильную работоспособность оборудования, то есть брать информацию с 10-15 датчиков, анализировать ее, и выдавать твет как на данный момент рабтает оборудование.

Добавлено через 50 секунд
Kuzia domovenok, этого достаточно для ответа на вопрос, или еще более подробно все расписать?...
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.06.2019, 15:43
Sukharev_K, да не, я так болтаю просто, интересно стало
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
27.06.2019, 15:53  [ТС]
Kuzia domovenok, ясно
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
28.06.2019, 21:36
Цитата Сообщение от Sukharev_K Посмотреть сообщение
Ну это не особо важно, суть в том, что мне нужно решить две задачи с помощью ИНС, эта задача диагностирования и задача прогнозирования, и вот какие ИНС оптимально подходят для решения этих задач
Недавно столкнулся с похожей задачей, но пока что ещё не занимался, поэтому это только мысли. Могу предложить в качестве диагностирующей сети попробовать использовать слои Кохонена, а решающей обычный персептрон. И уже если этот способ не даст результата, то пробовать другие варианты
1
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
28.06.2019, 23:42  [ТС]
Albinos, Так наверно и сделаю, тоже думал с кохонена начать в диагностировании. Думал просто может там LSTN с долговременной памятью использовать, но они больше наверно подходят для прогнозирования.
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
24.08.2019, 09:38  [ТС]
Доброго времени суток!)
Тут возник у меня один вопрос, а возможно ли на вход НС подавать сразу 2-5 векторов к примеру?
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
24.08.2019, 11:57
Доброго) А чего нужно добиться?
0
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
24.08.2019, 12:01  [ТС]
В качестве одного входного вектора я хочу рассмотреть данные с одного датчика, тоесть, к примеру один вектор будет иметь 10 значений, списанных с одного датчика) Второй вектор имеет 10 значений с другого датчика. И чтобы в иделе на вход поступала к примеру три разных вектора параллельно, и система из параллельно анализировала.)
А еще более глобальный вопрос меня сейчас еще волнует, это что такое сети кохонена и с чем их едят, а именно..:
"Доброго времени суток, не могу решать один вопрос, стал разбираться с сетями Кохонена и не могу найти понятную графическую иллюстрацию сетей. В идеале хотелось бы увидеть нейронную схему сетей кохонена, изображенную в стандартной форме нейронных сетей, ну то есть изображенную кружочками и стрелками. Может быть кто то может мне ее нарисовать или же скинуть ссылку. Хочу понять весь путь входных данных как они идут в сетях Кохонена, и так же как изменяются веса слоев в сетях кохонена, в плане по каким формулам. "
0
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
25.08.2019, 13:56
Цитата Сообщение от Sukharev_K Посмотреть сообщение
и система из параллельно анализировала.)
Не очень понятно, что имеется ввиду под параллельно анализировала.

По поводу сетей Кохонена- графически оно выглядит так же) А по внутреннему устройству - кину ссылку в лс
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2019, 13:56
Помогаю со студенческими работами здесь

Где есть много примеров по нейронным сетям?
Добрый вечер! Можете подсказать где есть много примеров по нейронным сетям...? Хотелось бы посмотреть и изучить! Покидайте прог)...

Книги по С++ и нейронные сети
Уважаемые форумчане, может кто посоветовать книги (или статьи в интернете) по созданию нейронных сетей на С++. Просто моих навыков и опыта...

Капсульные нейронные сети
Здравствуйте! Подскажите, подходит ли фреймворк JUCE для реализации капсульной нейронной сети на c++? Спасибо.

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

Нейронные сети. Перцептрон Розенблата
Здравствуйте! Помогите разобраться в коде (напишите комментарии). Уже несколько дней пытался понять, как он работает, но ничего толкового...


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

Или воспользуйтесь поиском по форуму:
72
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru