Форум программистов, компьютерный форум CyberForum.ru

обучение нейронной сети - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Узлы http://www.cyberforum.ru/cpp-beginners/thread763244.html
Здравствуйте. Может кто-то помочь решить задачу? (С++) Даны натуральное число n, действительные числа a1, a2, …, an . Если в последовательности (списке) a1, a2, …, an есть хотя бы один узел, информационное поле которого меньше чем -3, то во всех узлах с отрицательными числами заменить их на квадраты чисел, оставив остальные члены без изменения; в противном случае умножить все члены на 0.1.
C++ Ошибки в программе rational.h #define _Rational_h_ #include <iostream> using namespace std; int nod(int p, int q) { if (p < 0) p = -p; if (q < 0) q = -q; while (p != 0 && q != 0) http://www.cyberforum.ru/cpp-beginners/thread763243.html
C++ Определить количество слов, которые содержат ровно четыре буквы
Помогите. Дано строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые содержат ровно четыре буквы "о".
C++ Одномерный/двухмерный массив состоящий из елементов и заменить его елементы на
1)Задан одномерный массив состоящий из 12 элементов. Заменить единицами элементы массива, находящиеся после малейшего элемента 2) Задан линейный массив A. Составьте программу замены элементов крупнее десяти на нуль (0) 14) В двумерном массиве размерностью mxn найти сумму елементов, индексы которых в сумме составляют К Буду очень благодарен за вашу помощь. + гарантированы :С
C++ Бин. дер. поиска , рекурсия http://www.cyberforum.ru/cpp-beginners/thread763229.html
Доброе утро. Решаю следующую задачу : определить является ли дерево симметричным относительно корня. Имею следующий код : case 13 : { bool a; a = sim(root); if(a == true)cout<<"da\n"; else cout<<"net\n";
C++ Работа с лентами (Подсчитать количество слов оканчивающихся на букву о) Строка содержит английский текст. Подсчитать количество слов оканчивающихся на букву о. подробнее

Показать сообщение отдельно
Van111
кодер с++
208 / 187 / 4
Регистрация: 03.08.2011
Сообщений: 2,587
Записей в блоге: 12

обучение нейронной сети - C++

16.01.2013, 13:31. Просмотров 905. Ответов 1
Метки (Все метки)

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
struct SAcson
{
    int l,c; // строка, столбец
    float x; // заряд
};
struct SSinapc
{
    int l,c; // строка, столбец
};
struct SNeiron
{
    float w; // весы
    float c; // заряд
    vector <SAcson> a; // аксон
    vector <SSinapc> s; // синапс
    inline bool operator== (SNeiron * n) {return (n == this) ? true : false;}
};
class SNetAI
{
protected:
    float cw;
    float cx;
    vector<vector <SNeiron>> neirons; //  нейроны
    vector <bool> r; // реле ответов
    void initSinaps();
    void void_charge();
    void bypass(vector<SAcson* > &ns,  vector<SNeiron* > &nw ,vector <SNeiron> :: iterator n);
    void delete_duplicate_neiron(vector<SNeiron* > &nw, unsigned int size_not_delete);
public:
    friend SNeiron;
    SNetAI ();
    void create(char *с);
    void launc_signal(vector <unsigned int> m);
    vector <bool> & get_result();
    void learning(bool err);
    void learning_tree(vector <bool> &r, unsigned int type_l);
    void save(char *с);
 
};
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
97
98
99
100
101
102
103
104
105
106
void  SNetAI::delete_duplicate_neiron(vector<SNeiron* > &nw, unsigned int size_not_delete)
 {
    for (unsigned int i = size_not_delete; i < nw.size() ; i++)
    {
        for (unsigned int j = size_not_delete; j < nw.size() ; j++)
        {
            if(i == j)
                continue;
            if( nw[i] == nw[j])
            {
                vector<SNeiron* > ::iterator del_nw = nw.begin() + j;
                nw.erase(del_nw);
                j--;
            }
        }
 
    }
 };
 void SNetAI::learning_tree(vector <bool> &r , unsigned int type_l)
     {
         vector <SAcson*> nsp;
         vector <SAcson*> nsm;
         vector <SNeiron*> nwp;
         vector <SNeiron*> nwm;
 
         vector <vector <SNeiron>> :: iterator i2 = neirons.end() - 1;
         for (vector <SNeiron> :: iterator i =  i2->begin() ; i < i2->end() ; i++)
         {
             int size_nwp = nwp.size();
             int size_nwm = nwm.size();
             if (r[distance(i2->begin(), i)])
             {
 
                 bypass(nsp, nwp,i);
                 delete_duplicate_neiron(nwp, size_nwp);
             }
             else
             {
                 bypass(nsm, nwm,i);
                 delete_duplicate_neiron(nwm, size_nwm);
             }
         }
         switch(type_l)
         {
         case 1:
             for ( unsigned int i = 0; i < nsp.size(); i ++)
             {
                 nsp[i]->x += cx;
             }
             for ( unsigned int i = 0; i < nsm.size(); i ++)
             {
                 nsm[i]->x -= cx;
             }
             break;
 
         case 2:
             for ( unsigned int i = 0; i < nwp.size(); i ++)
             {
                 nwp[i]->w += cw;
             }
             for ( unsigned int i = 0; i < nwm.size(); i ++)
             {
                 nwm[i]->w -= cw;
             }
             break;
 
         case 3:
             for ( unsigned int i = 0; i < nsp.size(); i ++)
             {
                 nsp[i]->x += cx;
             }
             for ( unsigned int i = 0; i < nsm.size(); i ++)
             {
                 nsm[i]->x -= cx;
             }
             for ( unsigned int i = 0; i < nwp.size(); i ++)
             {
                 nwp[i]->w += cw;
             }
             for ( unsigned int i = 0; i < nwm.size(); i ++)
             {
                 nwm[i]->w -= cw;
             }
             break;
         };
 }
 void SNetAI::bypass(vector<SAcson* > &ns,  vector<SNeiron* > &nw ,vector <SNeiron> :: iterator n)
 {
    
    for (vector <SSinapc> ::iterator i = n->s.begin() ; i < n->s.end(); i++)
    {
        for (vector <SAcson> ::iterator j = neirons[i->c][i->l].a.begin(); j < neirons[i->c][i->l].a.end(); j++)
        {
            vector <SNeiron> :: iterator n2 = neirons[j->c].begin() + j->l;
            if (n2 == n)
            {
                ns.push_back(&j[0]);
                nw.push_back(&n2[0]);
                break;
            }
        }
        vector <SNeiron> :: iterator n2 = neirons[i->c].begin() + i->l;
        bypass(ns, nw,  n2);
    }
            
 }
правильно ли я организовал обучение - алгоритм обратного распространения ошибки(learning_tree)

Добавлено через 33 минуты
форумчане кто нибудь подскажите

Добавлено через 44 минуты
возник вопрос должнен ли присутствовать параметр в аксоне который бы отвечал за то - тормозящие или возбуждающее воздействие он производит?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru