Implementacja sieci nauronowej w cuda z wykorzystaniem Matlaba

0

Witam,
Mam działającą sieć w Matlabie (rozpoznającą rodzaj raka w danej próbce). Sieć patternnet, 2 warstwy, 9 wejść, 10 neuronów warstwy ukrytej, 1 wyjście. Mam wyciągnięte wagi, biasy, funkcję przejścia (tansig) i funkcję pomiędzy wagami oraz wejściami warstw (zwykłe mnożenie macierzy), nie mam żadnych opóźnień. Muszę teraz użyć tych danych i zaimplementować sieć w cuda oraz porównać wyniki.

Mój problem polega na tym, że po wstępnym przemnożeniu danych w Matlabie otrzymuję inny wynik niż za pomocą komendy output=net(input). Innymi słowy biorę transponowaną macierz wejściową (683x9), mnożę przez macierz wag (9x10), czyli mam (683x10), następnie dodaję powielony bias (1x10)x683, wszystko poddaję funkcji przejścia, ten sygnał podaję na wejście następnej warstwy i wszystko powtarzam. Nie wiem co robię źle, w Neural Network Input są też np. takie funkcje jak mapminmax (mapuje wartości na wart. z przedziału -1, 1) oraz removeconstantrows (usuwa wiersze składające się z takich samych wartości) w processFcns, jednak po ich zastosowaniu otrzymane wartości też różnią się od tych obliczanych przez Matlaba.

Może ktoś już robił coś podobnego i wie w czym tkwi problem? Z góry dziękuję za odpowiedź.

0

Może kolejność operacji nieprawidłowa - macierze kolejnych przekształceń mnożymy w odwrotnej kolejności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1