Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать формулу на c++ Нужно написать данную формулу на c++ https://www.cyberforum.ru/ cpp-beginners/ thread2339380.html Найти сумму чисел из диапазона [1,50], которые делятся на 5 или на 7 C++
Данно натуральные числа от 1 до 50. Найти сумму тех из них, которые делятся на 5 или на 7.
C++ Создание потока https://www.cyberforum.ru/ cpp-beginners/ thread2339373.html
Напишите программу, которая создает поток. Используйте атрибуты по умолчанию. Родительский и вновь созданный поток должны распечатать десять строк текста так, чтобы вывод родительского и дочернего...
C++ Поменять местами строки матрицы так, чтобы минимальные элементы образовывали возрастающую последовательность (С++)Дана матрица размера M x N (M<=10, N<=10). Поменять местами ее строки так, чтобы их минимальные элементы образовывали возрастающую последовательность. Вывести результат преобразования на... https://www.cyberforum.ru/ cpp-beginners/ thread2339358.html
Поиск и удаление файлов с заданным расширением в каталоге, введенном с клавиатуры C++
Задание: Составить программу по работе с файловой системой, которая обеспечивает ввод с клавиатуры имени каталога; если он существует, выполняет поиск всех файлов в данном каталоге, имеющих заданное...
C++ Добавить число на определенное место массива https://www.cyberforum.ru/ cpp-beginners/ thread2339339.html
Размер легко изменить Действия 1)Добавь число на определенное место 2)Добавить число в место индекса 3)Вывод массива считывающий пары чисел как дроби (по умолчанию числитель 0 знаменатель 1)...
C++ Замените все отрицательные числа на свои модули и напечатайте цифры на экране Введите 10 отрицательных и 10 положительных цифр на клавиатуре.Замените все отрицательные числа на свои модули и напечатайте цифры на экране https://www.cyberforum.ru/ cpp-beginners/ thread2339334.html C++ Вычислите сумму элементов каждой строки матрицы
Создайте матрицу 5*5, значение каждого элемента которой равно сумме номера строки и столбца, на пересечении которых он находится, и вычислите сумму элементов каждой строки.Я слишком тупой,чтобы...
C++ Наследование конструкторов и диструкторов Дан класс движущееся средство с аргументами числа колес и грузоподъемность Создайте классы - наследники: грузовик и автомобиль и соответствующие конструкторы. Конструкторы должны передавать... https://www.cyberforum.ru/ cpp-beginners/ thread2339292.html C++ Значение функции на интервале (исправить ошибку в коде) Задача: П.5.18.Правил Запрещено размещать задания и решения в виде картинок и других файлов с их текстом. Редактор формул внизу страницы Ошибка: выбивает ошибку в iost.h и conio.h Код: ... https://www.cyberforum.ru/ cpp-beginners/ thread2339290.html
Нейронная сеть Кохонена C++
Применить нейронную сеть Кохонена с самообучением для задачи кластеризации. На первом этапе сгенерировать случайные точки на плоскости вокруг 2 центров кластеризации (примерно по 20-30 точек)....
C++ Нейронные сети. Обучение персептрона https://www.cyberforum.ru/ cpp-beginners/ thread2339261.html
Всем привет. Может кто нибудь подсказать как делать именно это задание: Задать случайно значения точек в пространстве – по 10 в каждой из восьми областей, образуемых осями координат. Обучить...
2 / 2 / 1
Регистрация: 22.10.2012
Сообщений: 226
0

Использование нейросети fann на разных языках - C++ - Ответ 12997094

24.10.2018, 19:31. Показов 931. Ответов 2
Метки (Все метки)

Добрый день, коллеги!

Задача: Создать систему, работы нейросети и БД. (выделил тему распознания языка текста)

Моё видение: есть программа которая создает файл выборки, обучает нейросеть и сохраняет её. и есть dll с UDF функцией по которая выполняет загрузку ранее сохраненной нейросети, выполняет работу по распознания языка текста, отдает результат

Я сделал следующие по программе(программа написана на C#):
1. Подключил fann
2. написал код:
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
            StringBuilder sb = new StringBuilder();
            int countstring = 0;
            for (int i = 0; i < tRAINING_DATADataGridView.Rows.Count; i++)
            {
                string date = Convert.ToString(tRAINING_DATADataGridView[2, i].Value);
 
                if (countstring < date.Distinct().Count())
                {
                    countstring = date.Distinct().Count();
                }
            }
 
            string numInput = tRAINING_DATADataGridView.RowCount.ToString();
            string numHidden = Convert.ToString(countstring);
            string numOutput = tRAINING_DATADataGridView.RowCount.ToString();
 
            string str = numInput + " " + numHidden + " " + numOutput;
            sb.AppendLine(str);
 
            string resultstr;
            for (int i = 0; i < tRAINING_DATADataGridView.Rows.Count; i++)
            {
                resultstr = "";
                // Удалим все кроме букв
                string strtable = Convert.ToString(tRAINING_DATADataGridView[2, i].Value);
                string s1 = Regex.Replace(strtable, "([^\\p{L}])", "");
                // вызов функции подсчета коэфициэнтов встречания букв в тексте
                resultstr = generate_frequencies(s1);
                //запись в файл обучающего файла
                sb.AppendLine(resultstr);
 
                resultstr = "";
                for (int j = 0; j < tRAINING_DATADataGridView.Rows.Count; j++)
                {
                    if (i == j)
                        resultstr += "1 ";
                    else
                        resultstr += "0 ";
 
                }
                sb.AppendLine(resultstr);
            }
 
            File.WriteAllText("xor.data", sb.ToString());
 
            MessageBox.Show("Сеть обучена");
 
 
            try
            {
                FbConnection connection = new FbConnection(Properties.Settings.Default.ConnectionString1);
                connection.Open();
                FbTransaction transaction = connection.BeginTransaction();
 
 
                FbCommand cmd = new FbCommand("", connection, transaction);
 
                for (int i = 0; i < tRAINING_DATADataGridView.Rows.Count; i++)
                {
                    cmd.CommandText = "INSERT INTO TABL_SAMPLING (DATATIME, ID_TRANING_DATA, SERIAL_NUMBER) values ((select current_timestamp from rdb$database), " + Convert.ToInt32(tRAINING_DATADataGridView[0, i].Value) + ", " + i + " )";
                    cmd.ExecuteNonQuery();
                }
 
                transaction.Commit();
                connection.Close();
 
                MessageBox.Show("Выборка успешно добавлена в БД.", "Информация!", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка ошибок! \n\n" + ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
 
 
            uint num_input = Convert.ToUInt32(Convert.ToInt32(numInput));
 
            uint num_output = Convert.ToUInt32(Convert.ToInt32(numOutput));
            int layerss = Convert.ToInt32(numOutput);
            uint num_layers = Convert.ToUInt32(layerss - 1);
            uint num_neurons_hidden = Convert.ToUInt32(Convert.ToInt32(numHidden));
 
            NeuralNet net = new NeuralNet(FANNCSharp.NetworkType.LAYER, num_layers, num_input, num_neurons_hidden, num_output);
 
            TrainingData data = new TrainingData();
            data.ReadTrainFromFile("xor.data");
 
            net.InitWeights(data);
 
            net.TrainOnData(data,
                    1000, // max iterations
                    10, // iterations between report
                    0 //desired error
                    );
 
            net.Save("xor.net");
            MessageBox.Show("Файл с нейросетью готов!", "Информация!", MessageBoxButtons.OK, MessageBoxIcon.Information);
Всё работает, файл с нейросетью создается.


Для dll я так же написал код (dll написана на c++):
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
static char * u_delspace(char * str)
{
    int ptr=0;
    std::vector<double> list;
    char * strings, results;
    int total, variantPrav;
    fann_type *calc_out;
    fann_type input[59];
    int sizelist = list.size();
    std::string test1;
    struct fann *ann;
    double chislo, result, max;
    bool e;
    char temp;
    char * resultss;
 
 
        strings = str;
        std::regex r("/[^\p{L}]/iu");
        total = strlen(strings);
        
        for (int i = 0; i < total; i++){
            temp = strings[i];
            e = true;
            list.clear();
            for (int t = 0; t < sizelist; t++){
                if (temp == list[t]){
                    e = false;
                }
            }
            if (e == true){
                int count = 0;
                for (int j = 0; j < total; j++){
                    if (temp == strings[j]){
                        count++;
                    }
                }
 
                chislo = (count / total);
                result = floor(chislo*1000)/1000;
 
                input[i] = result;
 
                list.push_back(result);
            }
        }
 
        ann = fann_create_from_file("C:\\DB\\text.net");
        if(!ann)
        {
            return "Error creating ann \n";
        }
        calc_out = fann_run(ann, input);
        max = calc_out[0];
        variantPrav = 0;
 
 
 
        for (int i = 0; i < 10; ++i) {
            if (calc_out[i] > max) {
                max = calc_out[i];
                variantPrav = i;
            }
        }
        fann_destroy(ann);
        test1 = std::to_string(variantPrav);
        resultss = &test1[0u];
 
 
    
 
    return resultss;
}
но при запуске ошибка: "FANN Error 3: Wrong version of configuration file, aborting read of configuration file "xor.net""

Соответственно вопросы:
1. Возможно ли так использовать fann написать 1 часть на с# (FANNCSharp), а 2 часть на C++.
2. Если возможно: В чем может быть проблема? почему ошибка.

Добавлено через 42 минуты
дополню: в функцию в dll я подсовывал файлы с конфигурацией нейросети и не созданные мной, а из интернета..

Добавлено через 5 часов 51 минуту
Мне может в другой раздел нужно?

Вернуться к обсуждению:
Использование нейросети fann на разных языках C++
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.10.2018, 19:31
Готовые ответы и решения:

Библиотека FANN: нейросети
Добрый день. Недавно начал заниматься нейросетями. Нашел исходники библиотеки FANN . Разобрался с...

Сайт для разных регионов на разных языках!
Доброго время суток, подскажите пожалуйстя, я веб-дизайнер любитель и хотел бы сделать сайт на...

Сайт на разных языках
Подскажите пожалуйста! как сделать саит на нескольких языках? Чтоб был переключатль для выбора...

Текст на разных языках
Нужно создать файл с помощью языка сценариев JavaScript, с помощью переключателей выбираются языки...

2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2018, 19:31

Строки на разных языках
Возникла такая проблема: нужно выгрузить все реквизиты и все синонимы всех объектов метаданных,...

Раскрутка блога на разных языках
Добрый день, посоветуйте как лучше поступить при создании сайта на двух языках, чтобы при этом...

Вывод текста на разных языках
Я в отчаянии и я нуб. В файле есть вот такие строки $levelLabels = array('Тип сервера',...

вывод статьи на разных языках
у меня двуязычный сайт. при вхождении на сайт - сайт на росс. языку если не подходит пользователь...

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