Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
21 / 16 / 5
Регистрация: 22.06.2015
Сообщений: 68
1

Нейронка не обучается

05.02.2019, 00:09. Показов 780. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер, столкнулся с проблемой при попытке обучить самописную нейронку (персептрон с обратным распространением) - ошибка обучения не падает ниже определенного уровня, смена гипперпараметров не помогает. В качестве примера используется xor


код обратного распространения
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
void Net::backward(elementSet* _idealSet)
{
    //Recount output delta
    for (int i = 0; i < layers[layersCount - 1].count; ++i)
    {
        layers[layersCount - 1].neuron[i].recountOutputDelta(_idealSet->at(i));
    }
    //Recount hidden delta
    for (int layNum = layersCount - 2; layNum > 0; --layNum)
    {
        for (int neuNum = 0; neuNum < layers[layNum].count; ++neuNum)
        {
            layers[layNum].neuron[neuNum].recountHiddenDelta(&layers[layNum+1], neuNum);
        }
    }
 
    //Update Weight
    for (int layNum = layersCount - 1; layNum > 0; --layNum)
    {
        for (int neuNum = 0; neuNum < layers[layNum].count; ++neuNum)
        {
            layers[layNum].neuron[neuNum].updateWeight(trainSpeed, moment);
        }
    }
}
void Neuron::updateWeight(double _speed, double _moment)
{
    std::vector<sinaps>::iterator connect = connections.begin();
    double lastModWeight = 0;
 
    for (; connect < connections.end(); ++connect)
    {
        lastModWeight = _speed * delta * connect->first->getOut() + lastModWeight * _moment;
        connect->second += lastModWeight;
    }
}
double Neuron::recountOutputDelta(double _idealOut)
{
    delta = (_idealOut - out) * derivateActivation();
    return delta;
}
 
double Neuron::recountHiddenDelta(Layer* _nextLayer, int _myNum)
{
    double sum = 0;
    for (int i = 0; i < _nextLayer->count; ++i)
    {
        sum += _nextLayer->neuron[i].delta * _nextLayer->neuron[i].connections[_myNum].second;
    }
    delta = sum * derivateActivation();
    return delta;
}
Прямой ход
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Layer* forward(elementSet* _set)
    {
        if (_set->size() != *(topology)) throw "Invalid element's set! Set's size != size of topology's input layer.\n";
 
        //Set input 
        std::vector<double>::const_iterator elem = _set->cbegin();
        for (int j = 0; j < *(topology); ++j)
        {
            layers[0].neuron[j].setInput( &(*elem) );
            ++elem;
        }
 
        //Forward
        for (int i = 1; i < layersCount; ++i)
        {
            for (int j = 0; j < *(topology + i); ++j)
            {
                layers[i].neuron[j].activation();
            }
        }
 
        return &layers[layersCount - 1];
    }
И ссылка на остальное: https://github.com/VictorrGor/... neuronCell
Буду рад, если кто поможет)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.02.2019, 00:09
Ответы с готовыми решениями:

Нейронка, складывающая два числа
Здравствуйте! Начал изучать нейронные сети, и возник вопрос: как сложить два числа, допустим 5 и...

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

Простая нейронка, что-то не так с формулами
Что то, видимо не так с формулами, наверное где то ошибся. Пример, как я считаю сеть: Пусть есть 2...

Python, нейронка, типизация текста (с учетом смысла), word2vec (возможно)
Добрый день форумчане! Недавно заинтересовался изучением Python. Уровень владения: интуитивный...

0
05.02.2019, 00:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.02.2019, 00:09
Помогаю со студенческими работами здесь

Не обучается нейросеть
Пытаюсь написать многослойный перцептрон для решения задачи XOR. Структура простейшая 2 нейрона...

Неправильно обучается нейросеть
Вопрос, наверное, плохой, но уже не знаю что делать. Пишу нейросеть с 2 входными нейронами, одним...

Нейронная сеть не обучается
Доброго времени суток. Пытаюсь обучить нейронную сеть в эксель на данных. Формат данных...

Keras сеть с Dropout не обучается
Здравствуйте. Пытаюсь сконструировать перцептрон с архитектурой 64-96-36-24-8-4 для решения...


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

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