Per un ConvNet può essere interessante trovare l'input con limiti normati che massimizza l'attività di una singola conv. filtro come un modo per visualize the filters. Mi piacerebbe farlo nel pacchetto di deep learning Keras. Questo potrebbe essere fatto usando un algoritmo di ottimizzazione della scatola nera con il codice dallo FAQ.Gradiente dall'espressione Theano per la visualizzazione del filtro in 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)
Tuttavia, sarebbe un compito di ottimizzazione sostanzialmente più facile se avessi il gradiente. Come posso estrarre il gradiente dall'espressione Theano e inserirlo in una libreria di ottimizzazione Python come Scipy?
Grazie. Capisco l'idea alla base di 'theano.grad()', ma come estrarre i gradienti rispetto alla perdita di un modello di Keras? Basato su https://github.com/fchollet/keras/blob/master/examples/conv_filter_visualization.py ho visto come questo può essere fatto usando alcuni input 'X_train', ma non ho capito come farlo la perdita. I miei due problemi sono 1) Non riesco a estrarre la funzione di perdita come connessa alla rete 2) Questa nuova funzione ha bisogno sia di 'X_train' che di' y_train', che non riesco a fornire nel modo giusto. – pir
Keras calcola già i gradienti della perdita rispetto a ciascun livello, durante il backpropagation. Ma non vuoi i gradienti di uno strato intermedio rispetto all'input? –
Ah, si. Scusa, è passato un po 'di tempo da quando ho fatto la domanda. La tua risposta lo risolve. Il mio attuale problema è come estrarre i gradienti su tutti i parametri wrt. la perdita, come voglio esaminare la necessità di ritaglio sfumato. È facile ottenere dalla prova del backprop implementata in Keras? – pir