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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Дев4енка
0 / 0 / 0
Регистрация: 26.03.2011
Сообщений: 85
#1

C++ Нейронная сеть - C++

02.11.2013, 17:57. Просмотров 707. Ответов 0
Метки нет (Все метки)

Задание:
Написать на любом ЯВУ программу моделирования прогнозирующей линейной ИНС. Для тестирования использовать функцию y=3sin(7x)+0.3, количество входов 5. Метод обучения Видроу-Хоффа. Обучение производить на 30 значениях табулируя функцию с шагом 0.1.
Проблема следующая - ошибка очень большая получается. Т.е. где ошиблась или в вычислениях или в индексах. ( оформление программы не закончено. надо сначала с E разобраться)
p.s. извините, если не в ту тему. Просто не знаю, куда обратиться.
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
#include <iostream>
#include <math.h>
 
using namespace std;
 
int main()
{
    int n_in=5, // количество входов
        n_ob=30, // размер выборки для обучения
        n_pr=15, // размер прогнозируемой выборки
        it=0; // счетчик итераций
    float w[5], // весовые коэффициенты
        T, // пороговое значение
        E, E_min, // ошибка обучения и мин.ошибка
        t[30], // массив эталонных значений
        y[50], // массив выходных значений сети
        a; // скорость обучения
    
    for(int i=0;i<n_in;i++)
        w[i]=(1+rand()%9)/(float)10; // инициализация весовых коэффициентов
    T=(1+rand()%9)/(float)10; // инициализация порогового значения
    float tmp=0.0;
    
    for(int j=0;j<n_ob;j++) // заполнение массива выборки, на которой проходит обучение, т.е. эталонными значениями
        t[j]=3*sin(0.7*j*3.14/180)+0.3;
 
    cout << "Enter a: ";
    cin >> a;
    cout << "Enter Emin: ";
    cin >> E_min;
    do
    {
        E=0;
        it++;
        cout << "it = " << it << endl;
        for(int i=0;i<=(n_ob-n_in);i++)
        {
            y[i]=0;
            for(int j=0;j<n_in;j++)
                y[i]+=w[j]*t[i+j];
            y[i]-=T; // рассчитываем выходную активность
        
            for(int j=0;j<n_in;j++)
                w[j]-=a*(y[i]-t[i+n_in])*t[i+j]; // изменяем весовые коэффициенты
            T+=a*(y[i]-t[i+n_in]); // меняем пороговое значение
        }
 
        for(int i=0;i<=(n_ob-n_in);i++)
        {
            y[i]=0;
            for(int j=0;j<n_in;j++)
                y[i]+=w[j]*t[i+j];
            y[i]-=T; // расчитываем выходную активность
            E+=0.5*pow((y[i]-t[i+n_in]),2); // находим суммарную среднеквадратичную ошибку
        }
        cout << E << endl;
    
    } while (E>E_min);
    
    system("pause");    
    return 0;   
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2013, 17:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос C++ Нейронная сеть (C++):

Линейная нейронная сеть - C++
Доброго времени суток! Можете скинуть пример простейшей нейронной сети на Си/С++, Матлабе, или Java? У меня есть код для матлаба, но не...

Понятие нейронная сеть - C++
У меня возникли некоторые недопонимания в процессе изучения нейронной сети. 1) Как я понял нейронная сеть - это универсальный...

Нейронная сеть для функции - C++
Как написать нейронную сеть для решения такой задачи: У меня есть нейронная сеть. Я хочу ее обучить, например возводить числа в куб. ...

Нейронная сеть, прогнозирование, электроэнергия?! - C++
Здравствуйте, форумчане! Помогите, пожалуйста, написать в кратчайшие сроки программу) Надо спрогнозировать нагрузку на электросеть для...

Нейронная сеть Хопфилда. Количество соединений - C++
Сколько соединений имеет сеть Хопфилда при наличии x юнитов? n*(n-1) ?????? правильно????

Где хранить информацию о работе программы (о том чему научилась нейронная сеть) - C++
Вот, прочитал статью. http://habrahabr.ru/post/143129/ А где хранить информацию о работе программы (о том чему научилась нейронная...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2013, 17:57
Привет! Вот еще темы с ответами:

Что такое "нейронная сеть" и как она работает? - C++
Здравствуйте, объясните что такое нейронная сеть, как работает. Если можете дайте какой-нибудь простенький исходник, чтобы понять. Спасибо.

C++ и сеть - C++
Приветики-чмок. Хочу писать чатики и асечки, консольные шахматушки на троих и прочую радость. Раньше писал только оффлайн-приложения, с...

Книги c++ и сеть - C++
Подскажите какие-нибудь книги по программированию на c++ в связке с интернетом.

Сеть и интернет - C++
Постепенно перестал работать провод интернета в роутере,просто индикатор мигает с промежутком в секунду а то и больше,а если подключаться...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru