从Python Theano + Keras中提取神经网络激活值

时间:2015-09-28 07:13:31

标签: neural-network theano

说我有2类问题的简单MLP网络:

ValidateSubjectTeacher

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

它们是否存储在Theano的计算图中,如果可以的话,它们是否可以获得它们?如果不是为什么模型激活层中的所有值都是None?

更新

抱歉太快了。可以完美地找到从Dense层保持权重的张量对象。但是调用:

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'))

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

model.layers[1]

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

1 个答案:

答案 0 :(得分:0)

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

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

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