Python - sklearn.MLPClassifier:如何获取第一个隐藏层的输出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python - sklearn.MLPClassifier:如何获取第一个隐藏层的输出相关的知识,希望对你有一定的参考价值。
我正在经历一些深度学习技术,并遇到了一种不使用反向传播的方法(https://arxiv.org/abs/1706.02480)。该方法的基本思想是训练浅单个隐藏层,丢弃输出层,并在训练的(第一)隐藏层和新输出层之间添加另一个隐藏层。重复该过程(添加和训练),直到满足某个标准。我正在尝试使用sklearn中提供的MLP分类器来实现此方法。我面临的问题是如何获得隐藏层的输出。例如,如果我使用
mlp = MLPClassifier()
mlp.predict(data)
,它会给我整个网络的输出。但是,我需要的是网络隐藏层的子输出。为了显示:
输入 - > connection1(权重) - >隐藏层 - > connection2(权重) - >输出( - >预测)
我目前要求的不是输出预测,而是隐藏层(隐藏层和连接2之间)的结果。我知道隐藏层的输入(在connection1和隐藏层之间)可以通过计算
np.matmul(data, mlp.coefs_[0]) + mlp.intercepts_[0]
有没有办法获得隐藏层的结果?
答案
你误解了什么是什么。
输入是您传入的内容。
第一隐藏层由模型参数W1和b1组成。
隐藏层的输出为f(W1Tx + b1),其中f
是您的激活函数。
然后,这是第二隐藏层的输入,其由模型参数W2和b2组成。它就是......
所以,确切地说
from sklearn.neural_network._base import ACTIVATIONS
ACTIVATIONS['relu'](np.matmul(data, mlp.coefs_[0]) + mlp.intercepts_[0]))
是你在找什么。
以上是关于Python - sklearn.MLPClassifier:如何获取第一个隐藏层的输出的主要内容,如果未能解决你的问题,请参考以下文章