Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Можно ли одновременно изучать c# и HTML? Не будет ли путаницы в голове? Поделитесь советом Всем привет! Мне нравится язык c#, его структура и его стиль, но также хочу изучить и веб язык, как, например, HTML/PHP, туда же CSS. Как вы считаете, не помешает ли один язык другому? Или быть... https://www.cyberforum.ru/ cpp-beginners/ thread2446014.html Регулярные выражения C++
Пытаюсь составить регулярное выражение для поиска словосочетания: тип + имя переменной *(\w++\w++\w+|\w+*\**\*|\w+*\*|\w++\w+|\w+)+(\w+) проблема с случаем, когда переменные объявляются через...
C++ В Tizen Studio не работает выбор языка С++ Добрый день. Установил Tizen Studio, но в нем не работает выбор с++. Скажите пожалуйста почему так и как исправить? https://www.cyberforum.ru/ cpp-beginners/ thread2445994.html C++ Вывод данных Нужно чтобы выводились студенты с успеваемостю 3 или меньше. Проблема заключается в том, что сейчас выводит студентов у которых все оценки меньше 3(например-3,2,3,1), а нужно чтобы выводило всех у... https://www.cyberforum.ru/ cpp-beginners/ thread2445992.html
C++ Программа подсчета калорий
Пользователь вводит съеденные продукты и их граммы. Пользователь получает сумму калорий на 100 грамм введенных продуктов. Создать базу из 10 продуктов.
C++ Баг с мультипоточным программированием Всем привет! Помогите, пожалуйста, с отловом бага, связанным с распараллеливанием программы. Пишу нейронную сеть LSTM на C++. Столкнулся с багом, не могу понять причину его появления. Весь код, пока... https://www.cyberforum.ru/ cpp-beginners/ thread2445984.html
C++ Определить класс квадратное уравнение Определить класс Квадратное уравнение. Реализовать методы для поиска корней, экстремумов, а также интервалов убывания/возрастания. Создать массив/список/множество объектов и определить наибольшие и... https://www.cyberforum.ru/ cpp-beginners/ thread2445976.html C++ Функция setw
Для чего нужна функция setw? С примером, если можно
C++ Как записать объекты в динамический массив? https://www.cyberforum.ru/ cpp-beginners/ thread2445937.html
Здравствуйте, такой вопрос, как записать некоторое кол-во объектов в динамический массив? К примеру у меня есть изначально в массиве 1 объект, я и я хочу добавить к нему ещё один, чтоб их в массиве...
C++ Выбивает кучу неизвестных мне ошибок после компиляции https://www.cyberforum.ru/ cpp-beginners/ thread2445915.html
Программа компилируется нормально, все работает правильно, только вот после самой компиляции выводит кучу мусора-ошибок, открываются левые вкладки и окна. Исправьте, пожалуйста, а то я не понимаю, в...
Найти ошибку C++
Помогите найти ошибку. вот код #include <iostream> #include <string.h> #define n 3 using namespace std;
C++ Разобрать код программы https://www.cyberforum.ru/ cpp-beginners/ thread2445895.html
Помогите пожалуйста написать коментарии к этому коду очень нужно, там где-то я написал, а остальное помогите плес
0 / 0 / 0
Регистрация: 01.05.2019
Сообщений: 40
20.05.2019, 14:54  [ТС] 0

Нейронные сети на C++ - C++ - Ответ 13585325

20.05.2019, 14:54. Показов 3180. Ответов 71
Метки (Все метки)

Ответ

И вот я опять здесь...)
И так, создал хорошую выборку для обучения, не хочет обучаться больше, чем 0.175 при разной скорости обучения и весами выходного слоя.
Так же вот мы стали вводить рандомом веса выходного слоя, но каждый раз в начале всем трем весам присваиваются нули, попробовал ввести их в ручную, на обучение это не особо повлияло..
Подскажите пожалуйста как быть.. После обучения для тестированной выборке присваиваются одинаковые значения получается так..
input- обучающая выборка
output - целевой вектор
Все остальные значения остались прежними..
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "stdafx.h"
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>  
#include <ctype.h>
#include <iostream>
#include <cmath> 
#include <ctime>
#include "StdAfx.h"
#include <fstream>
#include <iostream>
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()
{
    srand(time(NULL));
    float w1_1[30], w1_2[30], w1_3[30];
    ifstream kf1("kf1.txt");
    ifstream kf2("kf2.txt");
    ifstream kf3("kf3.txt");
    for (int i = 0; i<30; i++)
    {
        w1_1[i] = 1 / (rand() % 100 + 1);
        w1_2[i] = 1 / (rand() % 100 + 1);
        w1_3[i] = 1 / (rand() % 100 + 1);
 
    }
    //float w2_1 = 0.9542, w2_2 = 0.4374, w2_3 = 0.3202;
    float w2_1 = 1 / (rand() % 100 + 1), w2_2 = 1 / (rand() % 100 + 1), w2_3 = 1 / (rand() % 100 + 1);
    cout << w2_1 << " " << w2_2 << " " << w2_3 << endl;
    float h = 0.01, cel = 0;
    float correctirovka[3];
    float delta[4];
    float b1_1 = 0, b1_2 = 0, b1_3 = 0, b2_1 = 0;
    float cor1_1[30], cor1_2[30], cor1_3[30];
    ifstream inp("input.txt");
    ifstream output("output.txt");
    float vxod[1110], vyxod[37];
    for (int i = 0; i < 1110; i++)
    {
        inp >> vxod[i];
    }
    for (int i = 0; i < 37; i++)
    {
        output >> vyxod[i];
    }
    for (int j = 0; j < 10000; ++j)
    {
        int f = 0;
        cel = 0;
        for (int i = 0; i < 1110; i = i + 30)
        {
            b1_1 = 0;
            b1_2 = 0;
            b1_3 = 0;
            for (int k = i; k<30; k++)
            {
                b1_1 += vxod[k + i] * w1_1[k];
                b1_2 += vxod[k + i] * w1_2[k];
                b1_3 += vxod[k + i] * w1_3[k];
            }
            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);
            cel += (vyxod[f] - b2_1) * (vyxod[f] - b2_1);
 
            //
            delta[0] = -2 * (vyxod[f] - b2_1) * proizvod_activ_fun(b2_1);
 
 
            // 
            delta[1] = 2 * proizvod_activ_fun(b1_1)*delta[0] * w2_1;
            delta[3] = 2 * proizvod_activ_fun(b1_3)*delta[0] * w2_3;
            delta[2] = 2 * proizvod_activ_fun(b1_2)*delta[0] * w2_2;
            for (int q = 0; q<30; q++)
            {
                cor1_1[q] = -delta[1] * vxod[i + q] * h;
                cor1_2[q] = -delta[2] * vxod[i + q] * h;
                cor1_3[q] = -delta[3] * vxod[i + q] * h;
            }
            for (int w = 0; w<30; w++)
            {
                w1_1[w] = w1_1[w] + cor1_1[w];
                w1_2[w] = w1_2[w] + cor1_2[w];
                w1_3[w] = w1_3[w] + cor1_3[w];
            }
            // 
            correctirovka[0] = -delta[0] * h*b1_1;
            correctirovka[1] = -delta[0] * h*b1_2;
            correctirovka[2] = -delta[0] * h*b1_3;
 
            //
            w2_1 = w2_1 + correctirovka[0];
            w2_2 = w2_2 + correctirovka[1];
            w2_3 = w2_3 + correctirovka[2];
            f++;
        }
        cout << cel / 37 << endl;
        if ((cel / 37) < 0.0002)
            break;
 
    }
    cout << w2_1 << " " << w2_2 << " " << w2_3 << endl;
    // 
    float test[114996];
    ifstream testirovanie("test.txt");
    for (int i = 0; i < 114996; i++)
    {
        testirovanie >> test[i];
    }
    ofstream fout("testik.txt");
 
    for (int i = 0; i<113996; i = i + 30)
    {
        b1_1 = 0;
        b1_2 = 0;
        b1_3 = 0;
        for (int k = i; k<30; k++)
        {
            b1_1 += test[k + i] * w1_1[k];
            b1_2 += test[k + i] * w1_2[k];
            b1_3 += test[k + i] * w1_3[k];
        }
        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);
        fout << b2_1 << endl;
    }
    fout.close();
    return 0;
}


Вернуться к обсуждению:
Нейронные сети на C++ C++
0
Миниатюры
Нейронные сети на C++   Нейронные сети на C++  
Вложения
Тип файла: txt input.txt (14.0 Кб, 1 просмотров)
Тип файла: txt output.txt (111 байт, 1 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.05.2019, 14:54
Готовые ответы и решения:

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

Нейронные сети
Добрый вечер, товарищи. Прошу у вас помощи по нейронным сетям. Есть обучающие выборка, там...

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

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

71
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.05.2019, 14:54

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

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

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

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

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