Я пытался смоделировать NN-функции MATLAB перед тестированием моей собственной кодированной сети.Я тренировался у = х1 + х2.
Но посмотрите, как это работает,
>> net = newfit([1 2 3 4 5 0 1 2 5;1 2 3 4 5 1 1 1 1],[2 4 6 8 10 0 2 3 6],15);
>> net = train(net,[1 2 3 4 5 0 1 2 5;1 2 3 4 5 1 1 1 1],[2 4 6 8 10 0 2 3 6]);
>> sim(net,[1;4])
ans =
12.1028
>> sim(net,[4;4])
ans =
8.0000
>> sim(net,[4;1])
ans =
3.0397
>> sim(net,[2;2])
ans =
5.1659
>> sim(net,[3;3])
ans =
10.3024
Может кто-нибудь объяснить, что не так с этими данными обучения?Разве недостаточно оценить y = x1 + x2?Или это просто чрезмерно специализировано?Я считаю, что это проблема регрессии.Теперь я не знаю, чего мне ожидать от моей собственной кодированной сети.Мне было интересно, на основании каких критериев сходится этот NN, где он дает такой глупый результат?Есть ли способ узнать, на какую функцию он отображается (я не знаю, как!)?Моя собственная сеть даже не сходится, потому что она проверяет ошибку суммы квадратов как условие разрыва цикла.Итак, как справиться с такой схемой обучения?
Однако у меня есть еще одна потрясающая схема обучения, которую я не могу тренировать.
Может ли кто-нибудь обучить следующий набор данных?Будет ли это работать / сходиться?
0 0 -------> 0
0 1 -------> 1000
1000 0 --> 1
1 1 -------> 0
Я использовал f (x) = x в выходном слое и использовал алгоритм обратного распространения, но для этого шаблонакод никогда не кажется сходящимся.