Python-sklearn.MLPClassifier : How to obtain output of the first hidden layer

标签 python machine-learning scikit-learn

我正在研究一些深度学习技术,并发现了一种不使用反向传播的方法( https://arxiv.org/abs/1706.02480 )。该方法的基本思想是训练浅的单个隐藏层,丢弃输出层,并在训练的(第一个)隐藏层和新的输出层之间添加另一个隐藏层。重复该过程(添加和训练)直到满足某些标准。 我正在尝试使用 sklearn 中提供的 MLP 分类器来实现此方法。我面临的问题是如何获取隐藏层的输出。例如,如果我使用

mlp = MLPClassifier()
mlp.predict(data)

,它会给我整个网络的输出。然而,我需要的是网络隐藏层的子输出。举例说明:

输入-->连接1(权重)-->隐藏层-->连接2(权重)-->输出(-->预测)

我当前需要的不是输出预测,而是来自隐藏层(隐藏层和连接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 : How to obtain output of the first hidden layer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50869405/

相关文章:

python - 如何将 sklearn 的 TransformedTargetRegressor 与自定义数据转换器一起使用?

Python 上下文对象更好地使用字典或属性?

python - 在 Celery/Django : cannot find reference 'control' in celery. 任务.control

linux - 通过 docker 安装 Tensorflow 时出错

python - 如何在数百万个条目中查找文本相似性?

python - 将 python 数组打印保存到 .csv

python - 为 Scikit-Learn 向量化 Pandas 数据框

python - 需要 NetworkX 帮助

python - 使用正则表达式从目录中解析文本

python - sklearn 的 MLPClassifier 的 Predict_proba() 函数输出总可能性不等于 1