2016-04-23 2 views
4

После обучения сети с помощью Keras:Доступ весов нейронных сетей и нейронные активации

  1. Я хочу получить доступ конечных подготовленных весов сети в определенном порядке.

  2. Я хочу знать значения активации нейронов для каждого вводимого входа. Например, после обучения, если я передаю X в качестве своего ввода в сеть, я хочу знать значения активации нейронов для этого X для каждого нейрона в сети.

Предоставляет ли Keras API доступ к этим вещам? Я хочу продолжить анализ на основе значений активации нейронов.

Обновление: Я знаю, что могу сделать это, используя Theano чисто, но Theano требует более низкоуровневого кодирования. И, поскольку Керас построен на вершине Теано, я думаю, что может быть способ сделать это?

Если Keras не может этого сделать, то среди Tensorflow и Caffe, что может? Keras является самым простым в использовании, за ним следует Tensorflow/Caffe, но я не знаю, какие из них обеспечивают доступ к сети, в которой я нуждаюсь. Последним вариантом для меня было бы спуститься до Теано, но я думаю, что было бы более трудоемким построить глубокий CNN с Theano ..

ответ

5

Это описано в Keras FAQ, вы в основном хотите вычислить активации для каждого слоя, так что вы можете сделать это с помощью этого кода:

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] 

к сожалению, вам нужно будет скомпилировать и запустить функцию для каждого слоя, но это должно быть просто.

Чтобы получить вес, вы можете позвонить get_weights() на любом уровне.

nth_weights = model.layers[n].get_weights() 
Смежные вопросы