Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2018, 16:16   #11
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Больше нейронов в скрытом слое. Графика нет. когда сеть проходит выборку, считает правильные и неправильные ответы и % правильных. Обучаю до 75% правильных ответов.
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 15.11.2018, 16:34   #12
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

75% чот мало, не особо лучше рандомного да/нет ) Особенно если проверяется и обучается на тех же данных.

А там нет библиотек что ли? Зачем все с 0 реализовывать?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.11.2018, 19:27   #13
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Библиотеки есть. Но для полного понимания картины решил с нуля, ну и чтоб жизнь легкой не казалась. Каким образом лучше преобразовать данные? я использую:
double x_min2=-2000;
double x_max2=2000;
double d12=-0.9;
double d22=0.9;

if((Close[i+2]-Close[i+3])>0){ x1=1;}else{ x1=0;}
if((Close[i+3]-Close[i+4])>0){ x2=1;}else{ x2=0;}
if((Close[i+4]-Close[i+5])>0){ x3=1;}else{ x3=0;}
if((Close[i+5]-Close[i+6])>0){ x4=1;}else{ x4=0;}
x5=1;
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 15.11.2018, 20:02   #14
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Z-score normalization часто используют например.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 15.11.2018, 20:10   #15
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

У меня так:
NormalizeDouble(Переменная, Digits);
Сколько знаков после запятой лучше взять?(Digits)
ЫЫЫЫЫЫ
Petrov210217 вне форума Ответить с цитированием
Старый 15.11.2018, 20:46   #16
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Это округление, а не нормализация.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.11.2018, 10:32   #17
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Petrov210217 Посмотреть сообщение
У меня так:
NormalizeDouble(Переменная, Digits);
Сколько знаков после запятой лучше взять?(Digits)
количество цифр берётся из настроек символа.
структура ConSymbol

только это не имеет ни малейшего отношения к Z-score normalization
_Bers вне форума Ответить с цитированием
Старый 17.11.2018, 10:58   #18
Petrov210217
Пользователь
 
Регистрация: 14.11.2018
Сообщений: 89
По умолчанию

Раз тут есть знающие люди есть, подскажите ошибки в алгоритме. Код выложу частями, раз всем лень скачивать файл.
w1=(((rand()-x_min)*(d2-d1))/(x_max-x_min))+d1;
w2=(((rand()-x_min)*(d2-d1))/(x_max-x_min))+d1;
w3=(((rand()-x_min)*(d2-d1))/(x_max-x_min))+d1;
...
w42=(((rand()-x_min)*(d2-d1))/(x_max-x_min))+d1;
подбираю веса рандомно к диапазону от -0,5 до +0,5
по формуле.
double x_min=0;
double x_max=32767;
double d1=-0.5;
double d2=0.5;

Входы сети
if((Close[i+3]-Close[i+4])>0){ x1=1;}else{ x1=0;}
if((Close[i+4]-Close[i+5])>0){ x2=1;}else{ x2=0;}
if((Close[i+5]-Close[i+6])>0){ x3=1;}else{ x3=0;}
if((Close[i+6]-Close[i+7])>0){ x4=1;}else{ x4=0;}
подается 0 или 1 в зависимости от знака

//первый скрытый слой 7 нейронов
net1 = x1 * w1 + x2 * w8 + x3 * w15 + x4 * w22 + x5 * w29 ;
net2 = x1 * w2 + x2 * w9 + x3 * w16 + x4 * w23 + x5 * w30 ;
net3 = x1 * w3 + x2 * w10 + x3 * w17 + x4 * w24 + x5 * w31 ;
net4 = x1 * w4 + x2 * w11 + x3 * w18 + x4 * w25 + x5 * w32 ;
net5 = x1 * w5 + x2 * w12 + x3 * w19 + x4 * w26 + x5 * w33 ;
net6 = x1 * w6 + x2 * w13 + x3 * w20 + x4 * w27 + x5 * w34 ;
net7 = x1 * w7 + x2 * w14 + x3 * w21 + x4 * w28 + x5 * w35 ;

out1 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net1) )),5) ;
out2 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net2) )),5) ;
out3 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net3) )),5) ;
out4 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net4) )),5) ;
out5 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net5) )),5) ;
out6 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net6) )),5) ;
out7 = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net7) )),5) ;
//выходной слой
net = out1 * w36 + out2 * w37 + out3 * w38 + out4 * w39 + out5 * w40 + out6 * w41 + out7 * w42 ;
out = NormalizeDouble(1 / (1+ MathPow( 2.718281828 , (- net) )),5) ;

Считаю ошибку выходного сигнала
if((out<0.5 && Close[i+1]<Close[i+2])|| (out>=0.5 && Close[i+1]>Close[i+2]))// правильные ответы
{
Pcmd++;
}
//---обучение методом обратного распространения ошибок

if(out<0.5 && Close[i+1]>=Close[i+2])//неправильные ответы
{
PcmdLb++;
error = 1 - out;//ошибка сети

}

if(out>=0.5 && Close[i+1]<=Close[i+2])//неправильные ответы
{
PcmdLs++;
error = 0 - out;//ошибка сети
}
delta = error * (out*(1-out)); //дельта

считаю дельту каждого нейрона и обновляю веса
w36 = w36 + out1 * delta * out * a ;
w37 = w37 + out2 * delta * out * a ;
w38 = w38 + out3 * delta * out * a ;
w39 = w39 + out4 * delta * out * a ;
w40 = w40 + out5 * delta * out * a ;
w41 = w41 + out6 * delta * out * a ;
w42 = w42 + out7 * delta * out * a ;

delta1 = delta * w36 ;
delta2 = delta * w37 ;
delta3 = delta * w38 ;
delta4 = delta * w39 ;
delta5 = delta * w40 ;
delta6 = delta * w41 ;
delta7 = delta * w42 ;

w1 = w1 + x1 * delta1 * out1 * a ;
w2 = w2 + x1 * delta2 * out2 * a ;
w3 = w3 + x1 * delta3 * out3 * a ;
w4 = w4 + x1 * delta4 * out4 * a ;
w5 = w5 + x1 * delta5 * out5 * a ;
w6 = w6 + x1 * delta6 * out6 * a ;
w7 = w7 + x1 * delta7 * out7 * a ;
w8 = w8 + x2 * delta1 * out1 * a ;
w9 = w9 + x2 * delta2 * out2 * a ;
w10 = w10 + x2 * delta3 * out3 * a ;
w11 = w11 + x2 * delta4 * out4 * a ;
w12 = w12 + x2 * delta5 * out5 * a ;
w13 = w13 + x2 * delta6 * out6 * a ;
w14 = w14 + x2 * delta7 * out7 * a ;
w15 = w15 + x3 * delta1 * out1 * a ;
w16 = w16 + x3 * delta2 * out2 * a ;
w17 = w17 + x3 * delta3 * out3 * a ;
w18 = w18 + x3 * delta4 * out4 * a ;
w19 = w19 + x3 * delta5 * out5 * a ;
w20 = w20 + x3 * delta6 * out6 * a ;
w21 = w21 + x3 * delta7 * out7 * a ;
w22 = w22 + x4 * delta1 * out1 * a ;
w23 = w23 + x4 * delta2 * out2 * a ;
w24 = w24 + x4 * delta3 * out3 * a ;
w25 = w25 + x4 * delta4 * out4 * a ;
w26 = w26 + x4 * delta5 * out5 * a ;
w27 = w27 + x4 * delta6 * out6 * a ;
w28 = w28 + x4 * delta7 * out7 * a ;
w29 = w29 + x5 * delta1 * out1 * a ;
w30 = w30 + x5 * delta2 * out2 * a ;
w31 = w31 + x5 * delta3 * out3 * a ;
w32 = w32 + x5 * delta4 * out4 * a ;
w33 = w33 + x5 * delta5 * out5 * a ;
w34 = w34 + x5 * delta6 * out6 * a ;
w35 = w35 + x5 * delta7 * out7 * a ;

а- скорость обучения
ЫЫЫЫЫЫ

Последний раз редактировалось Alex11223; 17.11.2018 в 11:06.
Petrov210217 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Комментарии по коду нейронной сети lexflax C++ Builder 5 15.11.2018 20:16
Обучение нейронной сети sonataprado Общие вопросы C/C++ 0 29.09.2011 20:43
имитация нейронной сети linan Помощь студентам 1 06.05.2011 16:48
Очень нужна помощь в написании программы на Delphi по предмету Сети ЭВМ G@rGul'YA Помощь студентам 1 20.07.2009 09:58
Нужна помощь в написании ПО sergunya999 Фриланс 20 07.07.2009 17:26