CNTK与python - 每层激活

时间:2017-12-01 15:26:42

标签: python conv-neural-network cntk

我正在使用CNTK的python API来训练我使用save_model函数保存的CNN。

现在我想在我的网络上运行一些分析。具体来说,我想看一下每一层的激活情况。显然我可以在一些名为img的数据上运行我的网络,如下所示:

model.eval(img)

但这只会给我网络中最后图层的输出。有没有一些简单的方法来获得前面图层的输出?

1 个答案:

答案 0 :(得分:0)

实际上,甚至为该任务提供了一个示例:https://github.com/Microsoft/CNTK/tree/master/Examples/Image/FeatureExtraction

让我简要介绍一下基本步骤:

重要的是您要获取输出的节点的名称。

# get the node in the graph of which you desire the output
node_in_graph = loaded_model.find_by_name(node_name)
output_nodes  = combine([node_in_graph.owner])

# evaluate the node e.g. using a minibatch_source
mb = minibatch_source.next_minibatch(1)
output = output_nodes.eval(mb[features_si])

# access the values as a one dimensional vector
out_values = output[0].flatten()
desired_output = out_values[np.newaxis]

基本上你就像你做的一样,不同的是你检索一个中间节点。