0 / 0 / 0
Регистрация: 19.11.2017
Сообщений: 1
1

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

20.11.2017, 10:20. Показов 2233. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ребята, словом, это программа составлена на borland c++ builder 5. Я её попытался реализовать на VS. ( Не я составлял программу). Но VS подчеркивает почти каждый for и говорит требуется объявление.

И полностью в ошибках вся вот эта строка

TImage* I1 = new TImage(this);
TImage* I2 = new TImage(this);
I2->Width = iDestSize;
I2->Height = iDestSize;

Я еще новичок в нейросетях и, кстати, вот программа:

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
const int iSourceSize = 100; 
const int iDestSize = 40; 
const int N = iDestSize*iDestSize; 
const int M = 10; 
const float e = -(1 / M) / 2; 
struct InputNeiron { 
; 
float fW[N]; 
float fOutput; 
}; 
 
InputNeiron InputRow[M]; 
 
struct Neiron 
{ 
float fOutput; 
float fSum; 
}; 
 
Neiron SecondRow[M]; 
 
TImage* I1 = new TImage(this); 
TImage* I2 = new TImage(this); 
I2->Width = iDestSize; 
I2->Height = iDestSize; 
 
for (int i = 0; i < M; i++) 
{ 
I1->Picture->LoadFromFile(AnsiString(i) + ".bmp"); 
vScale(I2, I1); 
for (int x = 0; x < iDestSize; x++) 
for (int y = 0; y < iDestSize; y++) 
if (I2->Canvas->Pixels[x][y] == clBlack) 
InputRow[i].fW[x*iDestSize + y] = 0.5; 
else 
InputRow[i].fW[x*iDestSize + y] = -0.5; 
} 
 
delete I1; 
delete I2; 
 
float iMinX, iMinY, iMaxX, iMaxY; 
iMinX = iMinY = iSourceSize + 1; 
iMaxX = iMaxY = -1; 
 
for (int x = 0; x<iSourceSize; x++) 
for (int y = 0; y<iSourcesize; y++) 
if (Source->Canvas->Pixels[x][y] == clBlack) { 
if (x < iMinX) 
iMinX = x; 
if (y < iMinY) 
iMinY = y; 
if (x > iMaxX) 
iMaxX = x; 
if (y > iMaxY) 
iMaxY = y; 
} 
 
const float fScaleX = (iMaxX - iMinX) / iDestSize; 
const float fScaleY = (iMaxY - iMinY) / iDestSize; 
for (int x = 0; x<iDestSize; x++) 
for (int y = 0; y <= iDestSize; y++) 
Dest - >Canvas - >Pixels[x][y] = Source - >Canvas - >Pixels[x*fScaleX + iMinX] 
[y*fScaleY + iMinY]; 
 
TImage* I = new TImage(this); 
I->Width = Source->Width; 
I->Height = Source->Height; 
 
float V[5][5]; 
for (int i = 0; i<4; i++) 
for (int j = 0; j<4; j++) 
V[i][j] = (float)(random(50)) / 100; 
float fSum; 
for (int x = 0; x<Source->Width; x++) 
for (int y = 0; y<Source->Height; y++) { 
fSum = 0; 
 
for (int i = -2; i<2; i++) 
for (int j = -2; j<2; j++) 
if (x + i>-1 && x + i<Source->Width && y + j>-1 && y + j<Source->Height) 
if (Source->Canvas->Pixels[x + i][y + j] == clBlack) fSum += V[i + 2][j + 2]; 
else 
fSum -= V[i + 2][j + 2]; 
 
if (fSum>(float)(random(400)) / 100) 
 
I->Canvas->Pixels[x][y] = clBlack; 
 
else 
I->Canvas->Pixels[x][y] = clWhite; 
} 
 
Source - >Canvas - >CopyRect(Rect(0, 0, Source - >Width, Source - >Height) , 
I>Canvas, Rect(0, 0, Source->Width, Source->Height)); 
delete I; 
 
 
for (int i = 0; i<M; i++) { 
InputRow[i].fOutput = 0; 
for (int x = 0; x<iDestSize; x++) 
for (int y = 0; y<iDestSize; y++) 
if (Source->Canvas->Pixels[x][y] == clBlack) 
 
InputRow[i].fOutput += InputRow[i].fW[x*iDestSize + y]; 
else 
InputRow[i].fOutput += -InputRow[i].fW[x*iDestSize + y]; 
if (InputRow[i].fOutput >= N / 2) 
InputRow[i].fOutput = N / 2; 
} 
 
float fOutputs[M]; 
for (int i = 0; i<M; i++) { 
 
SecondRow[i].fOutput = fOutputs[i] = InputRow[i].fOutput; 
SecondRow[i].fSum = 0; 
} 
 
int iCount = 0; 
do { 
for (int i = 0; i<M; i++) 
{ 
fOutputs[i] = SecondRow[i].fOutput; SecondRow[i].fSum = 0; 
} 
for (int i = 0; i<M; i++) 
for (int j = 0; j<M; j++) 
 
if (i == j) SecondRow[j].fSum += SecondRow[i].fOutput; 
 
else SecondRow[j].fSum += SecondRow[i].fOutput*e; 
 
for (int i = 0; i<M; i++) 
SecondRow[i].fOutput = SecondRow[i].fSum; 
} 
 
while (!bEqual(fOutputs) && ++iCount<25); 
 
float fMax = -N; int iIndex; 
 
for (int i = 0; i<M; i++) if (SecondRow[i].fOutput>fMax) 
 
{ 
fMax = SecondRow[i].fOutput; iIndex = i; 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.11.2017, 10:20
Ответы с готовыми решениями:

Элементарная нейронная сеть
Всем доброго времени суток, уважаемые программисты. Хочу попросить у вас помощи в понимании...

Нейронная сеть Кохонена
Применить нейронную сеть Кохонена с самообучением для задачи кластеризации. На первом этапе...

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

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

2
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
20.11.2017, 11:04 2
Цитата Сообщение от Слепой снайпер Посмотреть сообщение
TImage* I1 = new TImage(this);
скоорее всего это класс по загрузке изображения bmp тоисть там где брали код скачайте его или подключите
0
1486 / 1413 / 240
Регистрация: 19.02.2010
Сообщений: 3,914
22.11.2017, 20:18 3
Цитата Сообщение от Antikl Посмотреть сообщение
скоорее всего это класс по загрузке изображения bmp тоисть там где брали код скачайте его или подключите
Это класс из борландовской библиотеки VCL - альтернативы майкрософтовской MFC для построения интерфейсов прог.
Т.е. никакого скачивания кода не выйдет - это всю борландовскую библиотеку в сырцах придётся качать и портировать (ибо TImage зависит от классов-предков).
Так что - заменять на аналог из Студии (ХЗ как он там может называться - в Студии не программирую). Вариант - к файлам-картинкам ходить с помощью WinAPI-функций или GDI+-классов (если хочется сделать код, полностью независимый как от борландовских, так и майкрософтовских классов, и пользующийся только тем, что есть в самой Винде).
0
22.11.2017, 20:18
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2017, 20:18
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru