Wyeksportuj sieć neuronową przeszkoloną w MATLAB w innych językach programowania

Wyszkoliłem sieć neuronową za pomocą narzędzia MATLAB Neural Network Toolbox, w szczególności używając polecenianprtool, który zapewnia prosty interfejs GUI do korzystania z funkcji zestawu narzędzi i eksportowanianet obiekt zawierający informacje o wygenerowanym NN.

W ten sposób stworzyłem działającą sieć neuronową, której mogę użyć jako klasyfikatora, a diagram przedstawiający ją jest następujący:

Jest 200 wejść, 20 neuronów w pierwszej ukrytej warstwie i 2 neurony w ostatniej warstwie, które zapewniają dwuwymiarowe wyjście.

Chcę użyć sieci w innym języku programowania (C #, Java, ...).

Aby rozwiązać ten problem, próbuję użyć następującego kodu w MATLAB:

y1 = tansig(net.IW{1} * input + net.b{1});
Results = tansig(net.LW{2} * y1 + net.b{2});

Przy założeniu, żeinput jest jednowymiarową tablicą 200 elementów, poprzedni kod działa, jeślinet.IW{1} jest macierzą 20x200 (20 neuronów, 200 wag).

Problem polega na tym, że to zauważyłemsize(net.IW{1}) zwraca nieoczekiwane wartości:

>> size(net.IW{1})

    ans =

    20   199

Mam ten sam problem z siecią z wejściem 10000. W tym przypadku wynik nie wynosił 20x10000, ale coś takiego jak 20x9384 (nie pamiętam dokładnej wartości).

Zatem pytanie brzmi: jak mogę uzyskać wagi każdego neuronu? A potem, czy ktoś może mi wyjaśnić, jak mogę ich użyć do wytworzenia tego samego wyjścia MATLAB?

questionAnswers(5)

yourAnswerToTheQuestion