Форум программистов, компьютерный форум, киберфорум
C++: ИИ, нейросети, ML
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.12.2022
Сообщений: 2
1

Неработающая нейросеть

14.12.2022, 20:59. Показов 506. Ответов 2

Author24 — интернет-сервис помощи студентам
У меня задание написать нейросеть без использования библиотек для нейросетей на c++. Я написал нейросеть на определение ирисов Фишера, многое брал из гайдов в интернете. В общем она не работает, причем если ставить большое кол-во эпох то оно выдает почти одинаковые числа на выходе для каждого из примеров. На выходе 1 нейрон со значениями: 1 вид ириса - 0, 2 вид - 0.5, 3 вид - 1. В датасете 140 видов. Может кто помочь найти ошибку?
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
145
146
147
148
149
#include <cmath>
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include <fstream>
using namespace std;
 
#define neurons 20
 
double w1[neurons][4], w2[neurons], c[neurons];
double b = 0;
const double LR = 0.05;
const int epoch = 4000;
 
double activate(double x) {
    return (1.0f / (1.0f + exp(-x)));
}
 
 
 
double frontProp(double inputs[4]) {
    double result = b;
    for (int i1 = 0; i1 < neurons; i1++) {
        for (int i = 0; i < 4; i++) {
            result += w2[i1] * activate(c[i1] + w1[i1][i] * inputs[i]);
        }
    }
    return result;
}
 
 
 
void train(double data[4], double exp) {
    double per[neurons]{ 0 };
    for (int i = 0; i < neurons; i++) {
        for (int i1 = 0; i1 < 4; i1++) {
            w1[i][i1] = w1[i][i1] - LR * 2 * (frontProp(data) - exp) * w2[i] * data[i1] *
                (1 - activate(c[i] + w1[i][i1] * data[i1])) * activate(c[i] + w1[i][i1] * data[i1]);
            per[i] = per[i] + c[i] + w1[i][i1] * data[i1];
        }
    }
 
    for (int i1 = 0; i1 < neurons; i1++) {
            w2[i1] = w2[i1] - LR * 2 * (frontProp(data) - exp) * activate(c[i1] + per[i1]);
    }
    b = b - LR * 2 * (frontProp(data) - exp);
 
    for (int i = 0; i < neurons; i++) {
        c[i] = c[i] - LR * (frontProp(data) - exp) * w2[i] * (1 - activate(c[i] + per[i])) * activate(per[i]);
    }
}
int main() {
 
    const int len = 4, strings = 100;
    double trainingData[strings][len], expresults[strings];
 
    ifstream fs("iris.txt");
    ifstream fs2("iris_types.txt");
    if (!fs or !fs2) {
        cout << "Error";
        return 0;
    }
 
    for (int v = 0; v < strings; v++) {
        for (int r = 0; r < len; r++) {
            fs >> trainingData[v][r];
        }
        fs2 >> expresults[v];
        if (expresults[v] == 1) {
            expresults[v] = 0.5;
        }
        else if (expresults[v] == 2) {
            expresults[v] = 1;
        }
        else if (expresults[v] == 0) {
            expresults[v] = 0;
        }
    }
 
    fs.close();
    fs2.close();
 
    for (int q = 0; q < neurons; q++) {
        for (int i = 0; i < 4; i++) {
            w1[q][i] = fmod(rand() % 100000000 * 0.1, 1.05);
        }
    }
    for (int q = 0; q < neurons; q++) {
        w2[q] = fmod(rand() % 100000000 * 0.1, 1.05);
    }
 
    double prikol[10][4];
    ifstream proverka("proverka.txt");
    for (int v = 0; v < 10; v++) {
        for (int r = 0; r < 4; r++) {
            proverka >> prikol[v][r];
        }
    }
    proverka.close();
 
    cout << "\nTraining..." << endl;
 
    for (int i1 = 0; i1 < epoch; i1++) {
        for (int i = 0; i < strings; i++) {
            train(trainingData[i], expresults[i]);
        }
        if (i1 % 1000 == 0) {
            cout << ". ";
        }
    }
    double otvet = 0;
    for (int o = 0; o < 10; o++) {
        otvet = activate(frontProp(prikol[o]));
        cout << otvet << " ";
        switch (o) {
        case 0:
            cout << 0.5 << endl;
            break;
        case 1:
            cout << 0 << endl;
            break;
        case 2:
            cout << 1 << endl;
            break;
        case 3:
            cout << 0.5 << endl;
            break;
        case 4:
            cout << 0 << endl;
            break;
        case 5:
            cout << 0.5 << endl;
            break;
        case 6:
            cout << 1 << endl;
            break;
        case 7:
            cout << 0 << endl;
            break;
        case 8:
            cout << 0.5 << endl;
            break;
        case 9:
            cout << 0 << endl;
            break;
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.12.2022, 20:59
Ответы с готовыми решениями:

Неработающая функция _getch()
_getch() теперь не работает. Везде где применяется функция, ничего не происходит, как будто она там...

Неработающая нотация char*
Добрый день, господа и дамы. Столкнулся с такой проблемой: Изучаю тему &quot;Строки и массивы строк&quot;....

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

Примитивная Нейросеть
Чую, что вопрос не для этой ветки, но так как в нейросетях совсем начинающий так что сюда, если что...

2
1612 / 1514 / 251
Регистрация: 19.02.2010
Сообщений: 4,087
14.12.2022, 21:33 2
Цитата Сообщение от nameless1 Посмотреть сообщение
На выходе 1 нейрон со значениями: 1 вид ириса - 0, 2 вид - 0.5, 3 вид - 1.
Неверное решение.

Цитата Сообщение от nameless1 Посмотреть сообщение
Может кто помочь найти ошибку?
Думаешь, там одна ошибка?
0
0 / 0 / 0
Регистрация: 14.12.2022
Сообщений: 2
14.12.2022, 22:13  [ТС] 3
нет, но можете указать на конкретные ошибки?
0
14.12.2022, 22:13
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2022, 22:13
Помогаю со студенческими работами здесь

Простая нейросеть
Доброго времени суток! Передо мной стоит задача создать простую нейросеть. Вот начальный код: ...

Не обучается нейросеть на (С++)
Код программы (Qt C++) &lt;https://github.com/vista497/snakeNN&gt; Нейросеть использует генетический...

Простая нейросеть на C++
Доброго времени суток! Всё время обучения я не раз задумывался о написании собственной нейросети,...

Нейросеть распознание цифры в матрице
Здравствуйте, хочу написать нейронную сеть для распознавании цифр в двумерном массиве, почитал...

Нейросеть с рандомным исправлением коэффициентов
Помогите допилить код, а то начал оптимизировать в итоге хожу по граблям. У меня уже глаз...

Что такое нейросеть и как ее сделать?
Здравствуйте! Я давно хотел где-нибудь спросить, как можно на C++ создать программу, которую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Элементы алгоритмизации
hw_wired 28.01.2025
Основы алгоритмизации В современном мире алгоритмы играют фундаментальную роль в развитии информационных технологий и программирования. Понимание основ алгоритмизации является ключевым элементом в. . .
Человек и информация
hw_wired 28.01.2025
Введение: роль информации в познании мира В современном мире информация играет фундаментальную роль в процессе познания окружающей действительности. Она представляет собой совокупность сведений об. . .
Компьютер и информация
hw_wired 28.01.2025
Эволюция вычислительных машин История развития вычислительной техники начинается задолго до появления первых электронных устройств. Человечество всегда стремилось упростить процесс вычислений и. . .
Информационные технологии
hw_wired 28.01.2025
Введение в современные технологии работы с информацией В современном мире информационные технологии стали неотъемлемой частью практически всех сфер человеческой деятельности. Они существенно. . .
Информация вокруг нас
hw_wired 28.01.2025
Основные понятия информации В современном мире понятие информации является фундаментальным и охватывает практически все сферы человеческой деятельности. Информация представляет собой совокупность. . .
Компьютер для начинающих
hw_wired 28.01.2025
Введение в мир компьютерных технологий В современном мире информация стала одним из важнейших ресурсов человечества, определяющим развитие общества и технологий. Наша жизнь неразрывно связана с. . .
[golang] 189. Rotate Array
alhaos 28.01.2025
Повороты рукоятки, целочисленный слайс нужно сдвинуть на целое положительное число. Мне очень нравится решение на GO / / https:/ / leetcode. com/ studyplan/ top-interview-150/ package topInterview . . .
КуМир: решение задач на матрицы
bytestream 28.01.2025
КуМир представляет собой среду для обучения программированию, которая включает в себя мощные инструменты для работы с матрицами. Матрица в программировании - это двумерный массив, состоящий из. . .
КуМир: решение задач на строки
bytestream 28.01.2025
В системе программирования КуМир работа со строковыми данными является одним из важнейших аспектов создания программ. Строки представляют собой последовательности символов, заключенные в кавычки,. . .
КуМир: решение геометрических задач
bytestream 28.01.2025
Программирование геометрических задач в среде КуМир становится всё более актуальным в обучении школьников и студентов. КуМир — это разработанная в России обучающая программная среда, предназначенная. . .
КуМир, исполнитель Водолей: Задачи и решения
bytestream 28.01.2025
КуМир — это образовательная среда для обучения программированию. Она предлагает пользователям разнообразные инструменты для разработки и отладки программ, что особенно ценно для студентов и. . .
КуМир, исполнитель Чертежник: Решение задач
bytestream 28.01.2025
КуМир (Комплект Учебных МИРов) представляет собой образовательную среду для обучения основам программирования и алгоритмизации. Исполнитель Чертежник работает на координатной плоскости, где может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru