,   CyberForum.ru

- C++


C++ C++ http://www.cyberforum.ru/cpp-beginners/thread526246.html
, , C++. , . , , , , , ? ...
C++ , , , . : - , - , - . , . X. > 5, X . . Borland C... http://www.cyberforum.ru/cpp-beginners/thread526234.html
C++/CLI WinForms
visual stidio 2010 , : . . textbox1 textbox2 . : private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {...
C++
. ? . int A. 0 17. ? , int B ?
C++ . http://www.cyberforum.ru/cpp-beginners/thread526207.html
, . #include <iostream> #include <cmath> #include <cstdlib> using namespace std; main()
C++ . , " . , 100"

Nekto
342 / 287 / 10
: 23.03.2012
: 838
29.03.2012, 17:50    
Duha666
, ? , - .
Autolearn , .
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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
#include <stdio.h>
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <cmath>
 
using namespace std;
 
const int input_size = 2, hidden_size = 6 , output_size = 1; // ð*çìåðû ñîîòâåòñòâå**ûõ ñëîåâ
const int sz = input_size + hidden_size + output_size; // èòîãîâûé ð*çìåð ì*òðèö
const double a = 0.1; // êîýôôèöèå*ò è*åðöè*ëü*îñòè
 
int x[input_size], y[output_size]; // âõîä*îé âåêòîð è îòâåò ó÷èòåëÿ
 
double o[sz], d[sz], w[sz][sz], delta_w[sz][sz];
double v = 1;
 
double f(double x) // *êòèâ*öèî***ÿ ôó*êöèÿ
{
    return 1 / (1 + exp(-x));
}
 
void Initialize()
{
    for (int i = 0; i < input_size; i++) // è*èöè*ëèç*öèÿ âåñîâ ìåæäó âõîä*ûì è ñêðûòûì ñëîÿìè
        for (int j = input_size; j < input_size + hidden_size; j++)
            w[i][j] = 1.0 * (rand() % 2) / (rand() % 10 + 1); // 1* (1 èëè -1) * (1..10);
    for (int i = input_size; i < input_size + hidden_size; i++) // è*èöè*ëèç*öèÿ âåñîì ìåæäó ñêðûòûì è âûõîä*ûì ñëîÿìè
        for (int j = input_size + hidden_size; j < input_size + hidden_size + output_size; j++)
            w[i][j] = 1.0 * (rand() % 2) / (rand() % 10 + 1);
}
 
void GetAnswer() // òåêóùèé îòâåò ñåòè
{
    double tmp;
    for (int i = 0; i < input_size; i++)
        o[i] = x[i]; // ïîëó÷*åì îòâåòû âõîä*îãî ñëîÿ
    for (int i = input_size; i < input_size + hidden_size; i++) // ïîëó÷*åì îòâåò äëÿ ê*æäîãî *åéðî** èç ñêðûòîãî ñëîÿ
    {
        tmp = 0;
        for (int j = 0; j < input_size; j++)
            tmp += o[j] * w[j][i];
        o[i] = f(tmp);
    }
    for (int i = input_size + hidden_size; i < input_size + hidden_size + output_size; i++) // ïîëó÷*åì îòâåò äëÿ ê*æäîãî *åéðî** âûõîä*îãî ñëîÿ
    {
        tmp = 0;
        for (int j = input_size; j < input_size + hidden_size; j++)
            tmp += o[j] * w[j][i];
        o[i] = f(tmp);
    }
}
 
void BackPropagation() // îáð*ò*îå ð*ñïðåäåëå*èå îøèáêè
{
    double tmp;
    for (int i = input_size + hidden_size; i < input_size + hidden_size + output_size; i++)
        d[i] = o[i] * (1 - o[i]) * (y[i - input_size - hidden_size] - o[i]);
    for (int i = input_size; i < input_size + hidden_size; i++)
    {
        tmp = 0;
        for (int j = input_size + hidden_size; j < input_size + hidden_size + output_size; j++)
            tmp += d[j] * w[i][j];
        d[i] = o[i] * (1 - o[i]) * tmp;
    }
    for (int i = 0; i < input_size; i++)
    {
        tmp = 0;
        for (int j = input_size; j < input_size + hidden_size; j++)
            tmp += d[j] * w[i][j];
        d[i] = o[i] * (1 - o[i]) * tmp;
    }
    for (int i = 0; i < input_size; i++) // ïåðåñ÷åò äåëüòû ðåáåð ìåæäó âõîä*ûì è ñêðûòûì ñëîÿìè
        for (int j = input_size; j < input_size + hidden_size; j++)
        {
            delta_w[i][j] = a * delta_w[i][j] + (1 - a) * v * d[j] * o[i];
            w[i][j] += delta_w[i][j];
        }
    for (int i = input_size; i < input_size + hidden_size; i++) // ïåðåñ÷åò äåëüòû ðåáåð ìåæäó ñêðûòûì è âûõîä*ûì ñëîÿìè
        for (int j = input_size + hidden_size; j < input_size + hidden_size + output_size; j++)
        {
            delta_w[i][j] = a * delta_w[i][j] + (1 - a) * v * d[j] * o[i];
            w[i][j] += delta_w[i][j];
        }
    //v *= 0.99; // óìå*üø*åì êîôôèöèå*ò îáó÷å*èÿ
}
 
int main()
{
    srand(time(NULL));
    Initialize(); // è*èöè*ëèçèðóåì **÷*ëü*ûå âåñ*
    while (true)
    {
        printf("Input:\n");
        for (int i = 0; i < input_size; i++) // ïîëó÷*åì âõîä*îé âåêòîð
            scanf("%d", &x[i]);
        GetAnswer(); // ïîäñ÷èòûâ*åì îòâåò
        printf("Maybe: ");
        for (int i = input_size + hidden_size; i < input_size + hidden_size + output_size; i++)
            printf("%f ", o[i]); // âûâîäèì îòâåò óæå ïî ïîðîãîâîé ôó*êöèè
        for (int i = 0; i < 1000; i++) // êîððåêòèðóåì âåñ*
        {
            x[0]=0;
            x[1]=0;
            y[0]=0;
            GetAnswer();
            BackPropagation();
            x[0]=0;
            x[1]=1;
            y[0]=1;
            GetAnswer();
            BackPropagation();
            x[0]=1;
            x[1]=0;
            y[0]=1;
            GetAnswer();
            BackPropagation();
            x[0]=1;
            x[1]=1;
            y[0]=0;
            GetAnswer();
            BackPropagation();
        }
        printf("v=%f\n\n",v);
    }
}
1
- 4
 
: 13:47. GMT +3.
- , ,
-
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
@Mail.ru