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?