Gradiente de expressão Théano para visualização filtro em Keras

votos
5

Para uma ConvNet pode ser interessante para encontrar a entrada delimitada-norma que maximiza a atividade de um único conv. filtrar como uma maneira de visualizar os filtros . Eu gostaria de fazer isso no pacote de aprendizagem profunda Keras. Isso poderia ser feito usando um algoritmo de otimização caixa preta com o código da FAQ .

# 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)

No entanto, seria uma tarefa otimização substancialmente mais fácil se eu tivesse o gradiente. Como posso extrair o gradiente a partir da expressão Theano e introduzi-la em uma biblioteca de otimização Python como Scipy?

Publicado 23/12/2015 em 22:53
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Você pode imprimir o gradiente como descrito aqui e mão-code-lo em Scipy. Você também pode fazer a otimização em Teano - ver esta questão .

No entanto, provavelmente o método mais direto é para criar uma função get_gradients()que utiliza theano.grad()para retornar os gradientes dos filtros com respeito a uma entrada, em seguida, chamar scipy.optimize.minimizecom jac=get_gradients. De acordo com a documentação :

jac: boleano ou que pode ser chamado, Jacobiana opcional (gradiente) da função objectivo. [...] jac também pode ser um que pode ser chamado de retornar o gradiente do objectivo. Neste caso, ele deve aceitar os mesmos argumentos que divertido.

Respondeu 01/05/2016 em 17:55
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more