在使用Keras训练网络之后:
X
作为网络的输入,我想知道网络中每个神经元的X
的神经元激活值。Keras提供了对这些东西的API访问吗?我想做进一步的分析,基于神经元的激活值。
Update:我知道我完全可以使用Theano来完成这个任务,但是Theano需要更低级别的编码。而且,既然Keras是建立在Theano之上的,我认为有可能有办法做到这一点?
如果Keras不能做到这一点,那么在Tensorflow和Caffe之间,哪个可以呢?Keras是最容易使用的,其次是Tensorflow/Caffe,但我不知道其中哪个提供了我需要的网络访问。对我来说,最后的选择是到西亚诺去,但是我认为和西亚诺一起建立一个深层次的CNN会更费时。
发布于 2016-04-23 11:35:55
这是在Keras常见问题中讨论的,您基本上想要计算每个层的激活,所以您可以使用以下代码来实现:
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]
不幸的是,您需要为每个层编译和运行一个函数,但这应该是简单明了的。
要获得权重,可以在任何层调用权重()。
nth_weights = model.layers[n].get_weights()
https://stackoverflow.com/questions/36812256
复制