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

Что такое нейросеть и как ее сделать?

12.03.2020, 05:46. Показов 7828. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Я давно хотел где-нибудь спросить, как можно на C++ создать программу, которую называют "нейросеть" (хотя, к нейросети она никакого отношения не имеет). И я хочу спросить, что же называют словом "нейросеть", потому что я так и не понял, что.
Словом нейросеть, как я понял, называют программу вида
C++
1
2
3
int i[10][10];//массив "обученной" нейросети
int z[10];//массив входных данных для проверки. 
for (int k=0; k<10; k++) for (int h=0; h<10; h++) if(z[h]<i[k][h]) z[h]=-1;//неверные данные;
я не говорю, что пример выше - это нейросеть. Это вообще я только что придумал (и с ошибками). Просто элементы нейросети очень напоминают этот пример...
У них внутри алгоритм вроде
C++
1
2
3
4
5
int i=-100;
int j=0;
bool b=0;
if(i>j) b=true;
else b=false;
или
C++
1
2
3
4
5
int i=-100;
int j=0;
int b=0;
if(i>j) b=1;
else b=-1;
Т.е. он бессмысленный вообще.
А мне нужна такая нейросеть, чтобы она хоть немного напоминала человеческую (может много хочу). Т.е. без бессмысленных операций.
Где такую найти? Как ее сделать?

Добавлено через 1 час 23 минуты
Мне бы таку нейросеть.
Есть, допустим, тысячу изображению людей. И надо найти последовательность, по которой эти лица выстраиваются. Дальше длиннопост. Но вот есть идея что-то подобное сделать, плиз подскажите.
Кликните здесь для просмотра всего текста

Внимание весь код с ошибками и написан не для практической реализации, а лишь для построения идеи! Код с ошибками, тяжелый и сложный для психики.
Пусть изображение каждое имеет 100*100 пикселей, черно-белое и представлено в виде массива
C++
1
bool image[100][100];
Соответственно, "0" означает белый цвет, а "1" - черный цвет.
Для того, чтобы узнать последовательность строения изображений, необходимо создать массив последовательностей:
C++
1
2
3
4
5
6
7
8
9
10
11
strcut coord
{
   int x;
   int y;
   int set0(void){x=0; y=0};
};
strcut posl
{
   coord position[100][100];//каждый елемент массива содержит координаты черных точек
   //считается, что последовательность начинается с 1 и заканчивается 100000
};
Затем необходимо создать столько же последовательностей, сколько и изображений:
C++
1
2
3
4
5
6
7
struct image
{
   bool img[100][100];
};
int x=1024;//количество изображений
image *images=new images[x];
posl *p=new posl[x];
Затем необходимо создать среднюю арифметическую последовательность:
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
posl middlep;
posl otkl[2];//последовательность минимальных и максимальных отклонений от средней
for (int i=0; i<100; i++) for (int k=0; k<100; k++) {middlep.position[i][k].set0(); otkl[0].position[i][k].set0(); otkl[1].position[i][k].set0();}//обнуление
 
for(int s=0; s<x; s++)//x - количество изображений и последовательностей
   for (int i=0; i<100; i++)
      for (int k=0; k<100; k++)
      {
        middlep.position[i][k].x=(middlep.position[i][k].x+p[s].postion[i][k].x)/2;
        middlep.position[i][k].y=(middlep.position[i][k].y+p[s].postion[i][k].y)/2;
      }
 
for(int s=0; s<x; s++)//x - количество изображений и последовательностей
   for (int i=0; i<100; i++)
      for (int k=0; k<100; k++)
      {
        if(otkl[0].position[i][k].x>p[s].postion[i][k].x) otkl[0].position[i][k].x=p[s].postion[i][k].x;
        if(otkl[0].position[i][k].y>p[s].postion[i][k].y) otkl[0].position[i][k].y=p[s].postion[i][k].y;
      }
 
 
for(int s=0; s<x; s++)//x - количество изображений и последовательностей
   for (int i=0; i<100; i++)
      for (int k=0; k<100; k++)
      {
        if(otkl[1].position[i][k].x<p[s].postion[i][k].x) otkl[1].position[i][k].x=p[s].postion[i][k].x;
        if(otkl[1].position[i][k].y<p[s].postion[i][k].y) otkl[1].position[i][k].y=p[s].postion[i][k].y;
      }
Теперь, "middlep" представляет собой массив среднего арифметического последовательностей, "otkl[0]" - наименьшего отклонения и "otkl[1]" - наибольшего отклонения.
Теперь по массиву middlep, otkl[0], otkl[1] можно собирать рандомно сгенерированные изображения, эдакий генератор лиц из пары строк кода.
А забыл еще. Надо преобразовать изображения в последовательность:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct image
{
   bool img[100][100];
}
strcut coord
{
   int x;
   int y;
   int set0(void){x=0; y=0};
};
strcut posl
{
   coord position[100][100];//каждый елемент массива содержит координаты черных точек
   //считается, что последовательность начинается с 1 и заканчивается 100000
};
posl gen(image i)
{
   posl ret;
   for (int a=0; a<100; a++)
      for (b=0; b<100; b++) if (i.img[a][b]==1) {ret.position[a][b].x=b; ret.position[a][b].y=a;} else {ret.position[a][b].x=-2; ret.position[a][b].y=-2;// нет позиции
   }
   return ret;
}
Ну и генерация, по среднему арифметическому и с отклонениями для разнообразий
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
image gen_img(posl middle, post otkl1, posl otkl2)
{
   image ret;
   posl randp;
   for (int a=0; a<100; a++) for (b=0; b<100; b++) randp.position[a][b].set0();//обнуление
   for (int a=0; a<100; a++)
         for (int b=0; b<100; b++)
            {
                while(true)//работает до break;
                {
                   randp.position[a][b].x=crand()%middle.position[a][b].x;//генерируем рандомное изображение. 
                   randp.position[a][b].y=crand()%middle.position[a][b].y;
                  
                   if(randp.position[a][b].x<otkl1.position[a][b].x) меньше минимального отклонения
                        randp.position[a][b].x=crand()%otkl2.position[a][b].x;//генерируем заново
                   
                   if(randp.position[a][b].y<otkl1.position[a][b].y) меньше минимального отклонения
                        randp.position[a][b].y=crand()%otkl2.position[a][b].y;//генерируем заново
 
                   if(randp.position[a][b].x>otkl1.position[a][b].x) больше максимального отклонения
                        randp.position[a][b].x=crand()%middle.position[a][b].x;//генерируем заново
 
                    if(randp.position[a][b].y>otkl1.position[a][b].y) больше максимального отклонения
                        randp.position[a][b].x=crand()%middle.position[a][b].x;//генерируем заново
 
 
                     if(randp.position[a][b].x>=otkl1.position[a][b].x&&randp.position[a][b].x<=otkl2.position[a][b].x&&randp.position[a][b].y>=otkl1.position[a][b].y&&randp.position[a][b].y<=otkl1.position[a][b].y) break;
                 }
                   //если позиция прошла
                  
                   ret.img[randp.position[a][b].x][randp.position[a][b].y]=1;//задаем 1, черный цвет
             }
 
       return ret;
                        
 
   
}

Короче мне надо "нейросеть" типо вот такой как я написал. С ошибками, но надеюсь, что идея понятна. Т.е. брать кучу изображений и кучу последовательностей и в каждую последовательность должна вписываться первая по счету координата черной точки, вторая и т.д. Таким образом, можно выяснить местонахождение черных точек. А потом сделать среднее арифметическое каждой координаты. Взять минимальную координату точки и максимальную. И по этому генерировать изображения. Вот.
P.s. Пока я это писал крыша уже наверно поехала я сам не пойму что же я написал. Так что извиняйте за такое грубое неуважение. Но может среди Вас найдется телепат, который угадает идею.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.03.2020, 05:46
Ответы с готовыми решениями:

Я хочу сделать программу - чат. Что б обмениваться сообщениями. Как такое сделать? Какой код?
Если можно то с объяснениями пожалуйста. На языке с ++

Код не работает,говорит,что не знает,что такое delay(100).в чём проблема?как сделать,чтоб программа заработала?
#include &lt;graphics.h&gt; #include &lt;stdlib.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;dos.h&gt; int main() { int...

Как показать во что преобразует многомерный вектор нейросеть?
Для функции двумерного нормализованного вектора z=f(A,B) по X строим A по Y строим B по Z строим f(A,B) Получаем наглядную...

3
2622 / 1633 / 266
Регистрация: 19.02.2010
Сообщений: 4,335
12.03.2020, 12:12
Цитата Сообщение от Vitserduch Посмотреть сообщение
И я хочу спросить, что же называют словом "нейросеть", потому что я так и не понял, что.
См часть 4 тут https://vas3k.ru/blog/machine_learning/
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,984
Записей в блоге: 32
12.03.2020, 12:21
Мне кажется, я угадал основную идею. Надо чтобы можно было грабить корованы и чтобы домики набигали. Придется джва года ждать такую нейросеть.
0
 Аватар для Annemesski
2670 / 1333 / 479
Регистрация: 08.11.2016
Сообщений: 3,679
12.03.2020, 12:46
_Ivana, а когда дождемся - обмазаться ею ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.03.2020, 12:46
Помогаю со студенческими работами здесь

Как можно сделать такое? (Автоматическое нажатие клавиш и все что с этим связанно)
У меня возник вопрос как можно сделать чтоб программа автоматически нажимала на определенные клавиши? Например в игре GTA SAMP: Чтоб...

Как такое проделать с мемо? или что подходит под такое?
Привет всем! Как сделать такое? и на чем лучше мемо,листбокс.... или просто как вставить туда кнопку и что лучше посоветуете...

Как такое может быть и что это такое?
в маленьком превью одна картинка, открываешь совершенно другая (какая и должна быть) с чем это связано?

Что такое квантовый бит и, как следствие, что такое квантовый компьютер
Здравствуйте! Может ли кто-нибудь объяснить что такое квантовый бит, и, как следствие, что такое квантовый компьютер? Простым языком. ...

Что это такое и как это можно сделать?
Это что то из стандартных компонентов или как в своем проекте сделать что то подобное? подразумевается пока не нажал окно скрыто, нажал,...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru