【问题标题】:Accessing neural network weights and neuron activations访问神经网络权重和神经元激活
【发布时间】:2016-08-17 04:08:33
【问题描述】:

使用 Keras 训练网络后:

  1. 我想以某种顺序访问网络的最终训练权重。

  2. 我想知道每个传递的输入的神经元激活值。例如,在训练之后,如果我将X 作为输入传递给网络,我想知道网络中每个神经元的X 的神经元激活值。

Keras 是否提供对这些东西的 API 访问?我想根据神经元激活值做进一步的分析。

更新:我知道我可以纯粹使用 Theano 来做到这一点,但 Theano 需要更多的低级编码。而且,由于 Keras 是建立在 Theano 之上的,我认为有办法做到这一点吗?

如果 Keras 不能做到这一点,那么在 Tensorflow 和 Caffe 中,哪个可以? Keras 是最容易使用的,其次是 Tensorflow/Caffe,但我不知道其中哪些提供了我需要的网络访问。对我来说,最后一个选择是使用 Theano,但我认为使用 Theano 构建深度 CNN 会更耗时..

【问题讨论】:

    标签: tensorflow theano deep-learning caffe keras


    【解决方案1】:

    这在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()
    

    【讨论】:

    • @HashRocketSyntax 它们是激活,我真的不知道你在说什么,如果你有问题,你应该问你自己的问题,并得到可重现的结果。
    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 2014-01-18
    • 2017-12-08
    • 2017-02-15
    • 2016-09-02
    • 1970-01-01
    • 2013-08-20
    相关资源
    最近更新 更多