Aceder pesos da rede neural e activações neuronais

votos
4

Após o treinamento de uma rede utilizando Keras:

  1. Eu quero acessar os pesos treinados finais da rede em alguma ordem.

  2. Eu quero saber os valores de ativação do neurônio para cada entrada passou. Por exemplo, após o treinamento, se eu passar Xa minha entrada para a rede, eu quero saber os valores de ativação do neurônio para que Xpara cada neurônio na rede.

Será Keras fornecer acesso à API a estas coisas? Eu quero fazer uma análise mais aprofundada com base nos valores de ativação do neurônio.

Atualização : Eu sei que posso fazer isso usando Theano puramente, mas Theano requer mais codificação de baixo nível. E, uma vez Keras é construído em cima de Theano, eu acho que poderia haver uma maneira de fazer isso?

Se Keras não pode fazer isso, então entre Tensorflow e Caffe, que pode? Keras é o mais fácil de usar, seguido por Tensorflow / Caffe, mas eu não sei que estes fornecem o acesso à rede que eu preciso. A última opção para mim seria a de cair para Theano, mas eu acho que seria mais demorado para construir um profundo CNN com Theano ..

Publicado 23/04/2016 em 13:46
fonte usuário
Em outras línguas...                            


1 respostas

votos
5

Isso é abordado na Keras FAQ , basicamente você quer calcular as ativações para cada camada, para que possa fazê-lo com este código:

from keras import backend as K

#The layer number
n = 3 
# with a Sequential model
get_nth_layer_output = K.function([model.layers[0].input],
                                  [model.layers[n].output])
layer_output = get_nth_layer_output([X])[0]

Infelizmente você precisa compilar e executar uma função para cada camada, mas isso deve ser simples.

Para obter os pesos, você pode chamar get_weights () em qualquer camada.

nth_weights = model.layers[n].get_weights()
Respondeu 23/04/2016 em 18:35
fonte usuário

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