Dla ConvNet może być interesujące znalezienie wejścia ograniczonego do normy, które maksymalizuje aktywność pojedynczego konwertera. filtr jako sposób na visualize the filters. Chciałbym to zrobić w pakiecie głębokiego uczenia Keras. Można to zrobić za pomocą algorytmu optymalizacji czarnej skrzynki z kodem z FAQ.Gradient z wyrażenia Theano dla wizualizacji filtru w Keras
# with a Sequential model
get_3rd_layer_output = theano.function([model.layers[0].input],
model.layers[3].get_output(train=False))
layer_output = get_3rd_layer_output(X)
Byłoby jednak znacznie łatwiejsze zadanie optymalizacji, gdybym miał gradient. Jak wyodrębnić gradient z wyrażenia Theano i wprowadzić go do biblioteki optymalizacji Pythona, takiej jak Scipy?
Dzięki. Rozumiem podstawową ideę 'theano.grad()', ale jak wyodrębnić gradienty w odniesieniu do straty dla modelu Keras? Na podstawie https://github.com/fchollet/keras/blob/master/examples/conv_filter_visualization.py widziałem, jak można to zrobić za pomocą jakiegoś wejścia 'X_train', ale nie mam pojęcia, jak to zrobić dla strata. Moje dwa problemy to: 1) Nie mogę wydobyć funkcji utraty połączenia z siecią 2) Ta nowa funkcja wymaga zarówno "X_train", jak i "y_train", czego nie mogę zapewnić we właściwy sposób. – pir
Keras oblicza już gradienty strat w odniesieniu do każdej warstwy, podczas wstecznej propagacji. Ale czy nie chcesz gradientów warstwy pośredniej w odniesieniu do danych wejściowych? –
Ah, tak. Niestety, minęło trochę czasu, odkąd zadałem to pytanie. Twoja odpowiedź rozwiązuje to. Mój obecny problem polega na wyodrębnianiu gradientów między wszystkimi parametrami. straty, ponieważ chcę zbadać potrzebę przycinania gradientowego. Czy łatwo jest uzyskać dostęp do dowodów bezpieczeństwa, które zostały zaimplementowane w Keras? – pir