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:如何获取第一个隐藏层的输出的主要内容,如果未能解决你的问题,请参考以下文章

Python代写,Python作业代写,代写Python,代做Python

Python开发

Python,python,python

Python 介绍

Python学习之认识python

python初识