На радость нейросетевикам, быстрая и бесплатная библиотека для MT4 - страница 13

 
Figar0 >>:

Результат как раз именно всего лишь вменямый есть, используется, но вот сказать что это заслуга ЗЗ я не могу)

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

А в каком направлении стоит работать, скажите пожалуйста, если конечно результаты вашей работы не засекречены от общественности?

 
Kharin >>:

Ребят, а точно библиотека не "кривая"?

Ситуация такая: регулярно вылазит сообщение об ошибке и то, что терминал будет закрыт.

Читайте топик. Написано же русским языком:

static bool Parallel = true;

Если параллельный режим не поддерживается процессором, то это может привести к тому, что терминал выгрузится с сообщением об ошибке
 
lasso >>:

Да хрен бы с ним с советником. Да и переписывать, и заниматься им не надо.

  Есть подозрение на некорректную работу самой библиотеки, и здесь надо разобраться так это и нет. Иначе смысла двигаться дальше нет.  

Смоделировал Вашу ситуацию. Действительно, при использовании ann_train ответы одинаковые даже после обучения сети кол-ом сигналов ~10 000. Ответы сети при использовании ann_train_fast иногда разнятся а иногда нет. 

Думаю что действительно есть проблема, как минимум, с рандомизацией весов.

 

Попробуйте закомментировать f2M_randomize_weights. Если ответы сетей станут разными, значит ошибка в FANN2MQL. Если всё равно одинаковыми - ошибка в FANN.

По-умолчанию происходит рандомизация (-0.1 ... 0.1)


UPD: Проверил сам. Рандомизация есть в обоих случаях. Только есть странность - от 2 до 5 сеток подряд отвечают одинаково, далее группа других одинаковых. Итак, на 16 сеток есть 5 разных ответов. Если ошибка не будет исправлена, то для комитета из N членов нужны 3*N сетей, остальные - балласт.

 
Henry_White >>:

Читайте топик. Написано же русским языком:

А кто Вам сказал, что я использую параллельный режим?!

Почему надо сразу нравоучительно "метать какахи"? Не можете сказать, что написано в стеке и в чем конкретно ошибка,

так и не говорите ничего. Да, сейчас начнется про телепатов и прочее, предупреждаю этот возглас: дано сообщение об ошибке,

полный его текст, функции использовались такие же, как у Юрия Решетова, параллельный режим не использовался.

Какие могут быть причины ИМЕННО ТАКОГО сообщения?

 
Kharin >>:

А кто Вам сказал, что я использую параллельный режим?!

Прошу прощения ))

 
Kharin писал(а) >>

Поэтому последнюю Вашу фразу я считаю глупостью.

Считаете так потому что приняли её на свой счет, а я пытался лишь сказать, что библиотека не имеет мощного обработчика ошибок, и не прощает некорректной работы с объектами и указателями на них. Так что будем дружить! )))

А Решетова советник пробовали? То же вышибает терминал?

 
Dali писал(а) >>

UPD: Проверил сам. Рандомизация есть в обоих случаях. Только есть странность - от 2 до 5 сеток подряд отвечают одинаково, далее группа других одинаковых. Итак, на 16 сеток есть 5 разных ответов. Если ошибка не будет исправлена, то для комитета из N членов нужны 3*N сетей, остальные - балласт.

Замечено. Рандомизация от -1 до 1, а в профайле сети значения весов от -10.0е--003 до 10.0e-003

Пример: (12, -7.35577636217311400000e-003) (13, 7.63970005423449810000e-002)

Это правильно?

.....

Да, то же такое было, что значения выходов у первые двух-четырех сетей отличаются от последующих.

Пробовал умножать входы на различные коэффициенты. Проблему это не решает.

 
lasso >>:

Считаете так потому что приняли её на свой счет, а я пытался лишь сказать, что библиотека не имеет мощного обработчика ошибок, и не прощает некорректной работы с объектами и указателями на них. Так что будем дружить! )))

А Решетова советник пробовали? То же вышибает терминал?

Дружить мне больше нравится)))

Советник Решетова вышибал терминал до того, как я отменил параллельные вычисления.

Сейчас пробую свой советник во всех ракурсах и успешность операций проверяю Print'ом.

Заметил такую особенность: создание сетки может быть и неудачным(((

a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);

вот эта строка очень часто возвращает -1.

Скажу несколько точнее: некоторое число раз она возвращает не -1, а потом только -1, избавиться

от этого помогает только перезагрузка компьютера. Я подумал, что дело в том, что предыдущая сетка не удаляется и новой некуда

развернуться, поэтому сделал такой кусок кода:

for (int i=0;i<1024;i++)
{ann_destroy (ann[i]);}
int a=-1;
while(a<0)
{
a = f2M_create_standard (nn_layer,nn_input,nn_hidden1,nn_hidden2,nn_output);
Print(a);
}


Ну теперь-то точно первые 1024 сетки должны быть удалены! (может я и ошибаюсь).

Но опять же в лог пишется -1. До перезагрузки...

 

Ну пожалуй тоже добавлю в копилку странностей FANN...

Эксперимента ради, решил обучить комитет из 46-сетей размерности 30/N/N/1 брутфорсом (т.е. на каждом баре: ~300тыс). На каждый канал данных по одной НС. На вход подается временной паттерн. С размерностью баловался, поэтому указываю N/N (пробовал разные). Со слоями тоже баловался.
Активатор - FANN_SIGMOID_SYMMETRIC_STEPWISE. Пробовал другие, но сеть так быстро не сходится, как с ним.
Обучаю только знаку 1 или -1. Обучение на каждой итерации. 
Кол-во положительных и отрицательных итераций обучения практически равны. Если быть точнее то: 132522/-112221
Данные нормализованы к диапазону 1:-1.
Почти все сетки к концу обучения сходятся к СКО в пределах 0.09. Это много конечно, но не в этом суть...

Но вот что странно, на тестовом участке весь комитет дружно выдал значения близкие к -1. Имхо, это нездоровое поведение для НС. Возможно в библиотеке присутствует еще и алгоритмическая ошибка...

И еще одно наблюдение... При нормальном обучении (только сигнальные участки) комитет все рано тяготеет к сваливанию в отрицательные значения, правда не так явно как в брутфорсе.

Кто-нибудь наблюдал у себя подобные явления? Может есть идеи?


Пример визуализированных входных данных (снизу):