【问题标题】:Extraction of neural network activation values from Python Theano+Keras从 Python Theano+Keras 中提取神经网络激活值
【发布时间】:2015-09-28 18:29:02
【问题描述】:

假设我有针对 2 类问题的简单 MLP 网络:

model = Sequential()
model.add(Dense(2, 10, init='uniform'))
model.add(Activation('tanh'))
model.add(Dense(10, 10, init='uniform'))
model.add(Activation('tanh'))
model.add(Dense(10, 2, init='uniform'))
model.add(Activation('softmax'))

训练此网络后,在调试模式下观察 W 对象时,我无法看到它的任何值。

它们是否存储在 Theano 的计算图中的某个位置,如果是,是否有可能获取它们?如果不是,为什么模型激活层中的所有值都是None?

更新:

抱歉太快了。可以完美地找到来自密集层的张量对象持有权重。但是调用:

model.layers[1]

给我激活层。我想在哪里查看激活级别。相反,我只看到:

beta = 0.1
nb_input = 1
nb_output = 1
params = []
targets = 0
updates = []

我假设 keras 只是在模型评估后清除所有这些值 - 这是真的吗? 如果是这样,记录神经元激活的唯一方法是创建自定义激活层来记录所需信息 - 对吧?

【问题讨论】:

    标签: neural-network theano


    【解决方案1】:

    我对 Keras 不熟悉,但如果它正在构建传统的 Theano 神经网络计算图,则无法以您建议的方式查看激活值。

    通常,只有权重作为共享变量永久存储。在 Theano 计算的中间阶段计算的值是瞬态的,只能通过调试编译的 Theano 函数的执行来查看(注意,这并不容易 - 调试主机 Python 应用程序是不够的)。

    如果您直接构建计算而不是使用 Keras,我建议您在 Theano 函数的输出值列表中包含您感兴趣的中间激活值。我无法评论如何通过 Keras 实现这一点。

    【讨论】:

      猜你喜欢
      • 2021-04-27
      • 2012-12-14
      • 2014-01-18
      • 2017-12-08
      • 2016-09-13
      • 2013-08-20
      • 2019-08-02
      • 1970-01-01
      相关资源
      最近更新 更多