Próbuję zaprojektować sieć neuronową za pomocą Keras z priorytetem wydajności predykcji i nie mogę uzyskać wystarczająco wysokiej dokładności przez dalsze zmniejszanie liczby warstw i węzłów na warstwę. Zauważyłem, że bardzo duża część moich wag wynosi efektywnie zero (> 95%). Czy istnieje sposób na przycinanie gęstych warstw w nadziei ograniczenia czasu przewidywania?Przycinanie w kamerze
Odpowiedz
Nie dedykowany sposób :(
Obecnie nie jest łatwy (dedykowane) sposób to zrobić z Keras.
dyskusja trwa w https://groups.google.com/forum/#!topic/keras-users/oEecCWayJrM.
Możesz być również zainteresowany tym papier: https://arxiv.org/pdf/1608.04493v1.pdf.
Bardzo ciekawy artykuł, dziękuję. Czy masz jakiś wgląd w to, kiedy (lub jeśli) to zostanie wprowadzone w Keras? A może powinienem przejść do innej struktury? – Mirac7
Nie wierzę, że zmiana schematów pomoże bardzo, szczerze. O ile mi wiadomo, ani tensorflow ani theano nie mają tego rodzaju funkcji. Można jednak coś wypracować ręcznie ... progujesz wartości bezwzględne swoich ciężarów, usuwasz je z warstwy, a także usuwasz ciężary odpowiadające neuronom, które właśnie usunąłeś, kiedy tak jest. Nie brzmi to zbyt prosto, ale nie sądzę też, żeby istniały wielkie sekrety. – grovina
Istnieje duża różnica między "nie, to niemożliwe" i "Keras nie ma dedykowanego polecenia". Zmień swoją odpowiedź zgodnie ze swoim komentarzem, ponieważ obecnie uważam, że twoja odpowiedź jest błędna. –
Co dokładnie oznacza "efektywnie zero"? Z jakich typów warstw korzystasz? Co próbowałem? –
@MartinThoma Użyłem podstawowych warstw 'Dense'. Większość wag była albo e qual do zera, lub były tak bliskie zeru, że ustawienie ich na zero nie zmieni żadnego wyjścia sieci dla żadnego wejścia. Jednak żaden pojedynczy węzeł nie może zostać usunięty z sieci bez zwiększania utraty średniej liczby przypadków testowych. Zakładam, że w pewnym momencie, w którym większość wag jest bezużyteczna, rzadka sieć byłaby bardziej wydajna, jeśli chodzi o przewidywanie. – Mirac7
"były tak bliskie zeru, że ustawienie ich na zero nie zmieni żadnego wyjścia sieci dla żadnego wejścia" - co to znaczy? 10^-5? 10^-6? 10^-100? –