Здравствуйте!Об этом я хочу сообщить и я тщательно все тестировал с помощью 2 проектов keras и мною разрабатываемой ИНС на основе разложения
в ряд Фурье,отлаженная такая сеть оказалась мощнее keras, сделал ее конфигурируемой и многослойной и она только поддерживает оптимизацию
для бинарной классификации(например для sigmoid на конце ИНС), но и это нужно для решения задачи XOR.Я в обоих сетях не использую рандомного распределения(мои
опыты более воспроизводимы и более математически выверены).На обоих сетях я не получил полного решения XOR (в keras использовал,да и в своей
сети также, адаптивные learning rate-ы и пороговые колбеки по выходу по достижению 100% определению обучающего набора, также так
можно запрограммировать выход по достижению определенной среднеквадратичной ошибки).Я ставил максимум 2_000 эпох. Решение AND и OR,
я быстро получал,моя сеть вышла на 14-ой эпохе.При этом могла для AND ответить так (0.6, 0.7)-> 1.445(Т.е уверенности да - 144%-в
Фурье сети особая инициализация матрицы сети(весов).Но ни одна сеть никак не вышла из этих эпох для XOR, максимум они узнают
3 из 4 примеров (acc=0.75 -> 75% ). Никто не смог определить что 1 xor 1==0.
Система уравнений:
0*x+1*y=1
1*x+1*y=0
где x, y - веса сети.
Математически не имеет решения ,P.S. имеет решение(пока не все понятно) ,похоже это отразилась на практике(Как здесь может помочь стыковка матриц и нелинейность т.е функции активации теперь точно не понятно).
P.S. Оказывается xor решается) у меня просто оказываться архитектура была слабая,было такое решение
PythonВыделить код
1
2
3
4
5
6
7
8
9
10
11
12
13
p20=(push_obj,X_and_or_xor,nparray,push_obj,Y_xor,nparray,determe_X_Y,
make_net,('S',('D','D', 'D'),(2, 4, 4, 1),('s','t','r'),('use_bias_1', 'use_bias_1', 'use_bias_1'),ke_init[0]),
k_summary,
compile_net, (opt, compile_pars[1], compile_pars[2]),
cr_callback_wi_loss_treshold_and_acc_shure, (0.0001, 1),
fit_net, (fit_pars[0], fit_pars[1], fit_pars[2], fit_pars[3], fit_pars[4]),
evalu_,
predict,
sav_model,
sav_model_wei,
plot_train, "Logic XOR",
stop
)
Это для моего проекта(тестировочного стенда) keras-shell-co.(Писал о нем в другой статье) Что важно ke_init[0] - это рандомность, без нее не решает.Вышла на 359 эпохе из 1_000.