Форум программистов, компьютерный форум 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" программа на С заранее спасибо подробнее

Показать сообщение отдельно
Duha666
50 / 50 / 5
Регистрация: 10.03.2012
Сообщений: 138
29.03.2012, 16:38  [ТС]     Многослойный перспетрон
Оу, каким образом? Сделал ровно то же самое, но результат все-ещё не меняется.
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
#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() % 10000 + 1);
    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() % 10000 + 1);
}
 
void GetAnswer() // текущий ответ сети
{
    double tmp;
    for (int i = 0; i < input_size; i++)
        o[i] = f(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++) // пересчет дельты ребер между входным и скрытым слоями
        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];
            w[i][j] += v * d[j] * o[i];
        }
    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];
            w[i][j] += v * d[j] * o[i];
        }
    //v *= 0.99; // уменьшаем коффициент обучения
}
 
 
void AutoLearn()
{
    x[0] = rand() % 2;
    x[1] = rand() % 2;
    y[0] = (x[0] ^ x[1]);
    GetAnswer();
    printf("%d %d - %0.2lf\n", x[0], x[1], o[input_size + hidden_size]);
    BackPropagation();
}
 
int main()
{
    srand(time(NULL));
    Initialize(); // инициализируем начальные веса
    while (true)
        AutoLearn();
}
 
Текущее время: 12:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru