Форум программистов, компьютерный форум, киберфорум
Наши страницы
Алгоритмы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
dsfrhshdsfrhshd
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 7
1

Количество скрытых слоёв в алгоритме обратного распространения ошибки нейронной сети

15.08.2014, 13:13. Просмотров 1112. Ответов 4
Метки нет (Все метки)

Всем привет. Сколько должно быть скрытых слоёв и нейронов в них, если на входе два нейрона, а на выходе три?
Пользуюсь программой, описанной здесь http://habrahabr.ru/post/198268/
Программа выполняется уже около часа
C++ (Qt)
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
int main()
{
    std::vector<std::vector<double> > DataToFeedNN;
    std::vector<double>  Data1;
    Data1.push_back(120);
    Data1.push_back(110);
    Data1.push_back(90);
    DataToFeedNN.push_back(Data1);
 
    std::vector<double>  Data2;
    Data2.push_back(40);
    Data2.push_back(60);
    Data2.push_back(82);
    DataToFeedNN.push_back(Data2);
 
    std::vector<double>  Data3;
    Data3.push_back(100);
    Data3.push_back(111);
    Data3.push_back(120);
    DataToFeedNN.push_back(Data3);
 
 
 
    std::vector<double>  Data4;
    Data4.push_back(123);
    Data4.push_back(100);
    Data4.push_back(90);
    //DataToFeedNN.push_back(Data4);
 
    std::vector<std::vector<double> > trainingSample;
    std::vector<double> ts1;
    ts1.push_back(4.5);
    ts1.push_back(34);
    std::vector<double> ts2;
    ts2.push_back(4.6);
    ts2.push_back(23);
    std::vector<double> ts3;
    ts3.push_back(3.9);
    ts3.push_back(14);
 
    std::vector<double> ts4;
    ts4.push_back(3.8);
    ts4.push_back(3.6);
    trainingSample.push_back(ts1);
    trainingSample.push_back(ts2);
    trainingSample.push_back(ts3);
   //trainingSample.push_back(ts4);
 
 
    NeuralNetwork<double> * NN = new NeuralNetwork<double>(3,2,1,3);
    NN->SetMinMSE(0.01);
    NN->Train(DataToFeedNN,trainingSample);
 
 
    std::cout << std::endl;
    std::cout << "Input data: \n";
    NN->GetNetResponse(DataToFeedNN[0]);
 
    std::cout << std::endl;
    std::cout << "Input data: \n";
    NN->GetNetResponse(DataToFeedNN[1]);
 
    std::cout << std::endl;
    std::cout << "Input data: \n";
    NN->GetNetResponse(DataToFeedNN[2]);
 
 
    std::cout << std::endl;
    std::cout << "Input data: { test }\n";
    NN->GetNetResponse(Data4);
 
    delete NN;
    return (0);
}
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.08.2014, 13:13
Ответы с готовыми решениями:

Алгоритм обратного распространения ошибки
Добрый день. Пытаюсь реализовать многослойный перцептрон и обучить его с помощью указанного...

Указать число скрытых слоёв нейронной сети
Каким образом в STATISTICA 12 или STATISTICA 10 можно указать число скрытых слоёв нейронной сети? В...

Нейронные сети,Метод обратного распространения ошибки
:help:Кто нибудь знает,где взять работающюю программу на C++ по теме: &quot;Метод обратного...

Алгоритм обратного распространения ошибки. Нейронные сети
Прошу помощи с реализацией алгоритма обратного распространения ошибки. Написал программу...

Нейронные сети "Многослойный персептрон и алгоритм обратного распространения ошибки"
Помогите, пожалуйста! Очень и срочно нужно создать многослойную нейронную сеть и обучить для...

4
VTsaregorodtsev
606 / 563 / 85
Регистрация: 19.02.2010
Сообщений: 2,055
17.08.2014, 21:36 2
Лучший ответ Сообщение было отмечено dsfrhshdsfrhshd как решение

Решение

Зависит от каждой конкретной задачи.
Оптимум - это попадание в экстремум или выход на асимптоту того или иного графика, показывающего точность функционирования (ошибку обучения и/или ошибку обобщения) нейронки в зависимости от числа слоёв-нейронов.
(так что да - придётся потрахаться, перебирая разные размеры сетей, иначе для взятого с потолка размера ничего не докажете).

Насчёт скорости - нефиг пользоваться тормозным убожеством из инета. Это касается как выбранных алгоритмов (кстати, каких? ведь обратное распространение - это просто способ вычисления градиента, а затем должен применяться какой-то метод градиентной оптимизации или стохастической аппроксимации, и эту информацию по отквоченному куску кода я увидеть не могу) - так и особенностями программной реализации.
Например, кто-нить может мне доказать, что в данной задаче (или для данной нейросетки) нужна двойная точность хранения данных? Ведь размер активно (на каждой итерации) используемой памяти при этом может не влезать в кэш (а вот при одинарной точности - может влезть, что положительно повлияет на скорость).
1
dsfrhshdsfrhshd
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 7
18.08.2014, 23:09  [ТС] 3
Спасибо, подобрал) Теперь обучение идёт секунд по 15 примерно)
Но у меня, возник ещё вопрос. Я решил теперь сам реализовать данный метод. Пользуюсь алгоритмом, описанным в статье: http://miest.narod.ru/iissvit/rass/vip10.htm Мне не понятен последний пункт: "Шаг 7. Подаём на вход уже обученной сети контрольный вектор X и сеть рассчитает Y (решается задача прогнозирования)." По какой формуле произвести расчёт в этом пункте?
0
dsfrhshdsfrhshd
0 / 0 / 0
Регистрация: 15.08.2014
Сообщений: 7
21.08.2014, 21:31  [ТС] 4
Разобрался.
0
diamagnet81
1 / 1 / 2
Регистрация: 15.08.2014
Сообщений: 5
29.08.2014, 23:11 5
Цитата Сообщение от dsfrhshdsfrhshd Посмотреть сообщение
Разобрался.
Подаём на вход уже обученной сети контрольный вектор X и сеть рассчитает Y
Вот бы в 00:01 01.01.2030 получилось оптимистично и анекдотично:
Подаём на вход уже обученной сети контрольный вектор NSFNetCloud-X и сеть рассчитает NSFArtificialMind-X...
0
29.08.2014, 23:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2014, 23:11

Алгоритм обратного распространения ошибки
Заметила такую вещь. В разной литературе пишут по-разному, и я не могу понять почему некоторые...

Метод обратного распространения ошибки
Умные люди, подскажите: есть нейронная сеть, 20 входных нейронов, 10 в скрытом слое и 3 выходных...

Метод обратного распространения ошибки
Всем доброго времени суток. Прошу не удалять тему, она больше к теории относится, нежели к...


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

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

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